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