Hi,
X11 has a library call XInitThreads(), which is in some X11 libraries really
doing something ;-) Must be the very first call before any call to the X
library. May be this helps. This is in fact done by ROOT, as we do it before
creating the display.
In ./x11/src/GX11Gui.cxx we introduced:
Int_t TGX11::OpenDisplay(const char *dpyName)
{
...
#ifdef _REENTRANT
// very first call before any X-call !!
if (!XInitThreads())
Warning("OpenDisplay", "system has no X11 thread support");
#endif
...
}
Greetings,
Marc
-> -----Original Message-----
-> From: Victor Perevoztchikov [mailto:perev@bnl.gov]
-> Sent: Monday, August 20, 2001 3:53 PM
-> To: Thomas Bretz
-> Cc: roottalk@pcroot.cern.ch
-> Subject: Re: [ROOT] Multithreaded GUI, TRootEmbeddedCanvas
->
->
-> Hi Thomas,
->
-> TCanvas::Update has defence from non thread safe X11.
->
-> void TCanvas::Update()
-> {
-> if (gThreadXAR) { //<========================= This is defence
-> void *arr[2];
-> arr[1] = this;
-> if ((*gThreadXAR)("CUPD", 2, arr, NULL)) return;
-> }
-> if (!IsBatch()) FeedbackMode(kFALSE); // Goto double
-> buffer mode
-> PaintModified(); // Repaint all modified pad's
-> Flush(); // Copy all pad pixmaps to the screen
-> SetCursor(kCross);
-> }
->
-> But may be due to your own TApplication the gThreadXAR is zero.
-> Check it please.
->
-> Victor
->
-> Thomas Bretz wrote:
-> >
-> > Hello,
-> >
-> > I have some trouble with the following:
-> >
-> > I have a class derived from TApplication. In its
-> constructor I create a
-> > GUI (a class derived from TMainFrame, which creates two
-> instances of a
-> > class derived from RootEmbeddedCanvas) and a thread. The
-> thread calls
-> > GetCanvas()->Modified() and GetCanvas()->Update() for both embedded
-> > canvases after updating its contents in a loop.
-> > In most cases I get some X11 error about invalid Pixmaps.
-> I guess it is
-> > because TApplication::Run() and the GUI-Update-Loop are running in
-> > different threads. How can I work around this? (Maybe I could use
-> > timers, but for me it is important to run the updating
-> thread with less
-> > priority than the main thread).
-> >
-> > Can somebody help me?
-> >
-> > Thanks,
-> > Thomas.
->
-> --
-> Victor M. Perevoztchikov perev@bnl.gov perev@vxcern.cern.ch
-> Brookhaven National Laboratory MS 510A PO Box 5000 Upton NY
-> 11973-5000
-> tel office : 631-344-7894; fax 631-344-4206; home 631-345-2690
->
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:58 MET