Fw: [ROOT] ROOT/QtROOT within a multithreaded Qt application

From: Valeri Fine (fine@bnl.gov)
Date: Tue Jan 08 2002 - 18:43:30 MET


Hello folks,

It  looks like New Year presents still coming :-)
I had replied this message 1 week ago (see below).

The bottom line of that conversation:

The reason of the problem is not ROOT itself rather the call 
to X11 system emitted from two different threads. (One from ROOT, 
another one from Qt). I hope your X11 system itself had been compiled 
with multithread option on. 

This problem might have been solved more less :-) transparent way if ROOT 
TVirtualX class would provide Qt implementation rather the direct X1.
Otherwise it is end-user responsibility (see Go4 comment) to adjust 
things properly.

  Best regards, Valeri

----- Original Message ----- 
From: "Valeri Fine" <fine@bnl.gov>
To: "Colley, Tony" <Tony.Colley@itt.com>
Cc: <roottalk@pcroot.cern.ch>
Sent: Friday, January 04, 2002 4:16 PM
Subject: Re: [ROOT] ROOT/QtROOT within a multithreaded Qt application


> 
> > 
> > The original Qt application (CSF) runs fine without adding any of the ROOT
> > stuff, and I do not call any Qt functions in my added code... just ROOT (and
> > ROOT definitely does not call any Qt functions).
> > 
> > So the answer to your question, Valeri, is "yes, I have paid attention". But
> > as I mentioned in the section you quoted, creating Qt widgets/dialogs from
> > the simulation thread *does* work. It is TCanvas (specifically, displaying a
> > TCanvas created in the simulation thread) that causes the program to segv.
> > 
> 
>  Ok,
>  Let me ask you another way.
> 
>  Qt GUI thread and the thread you make call to TCanvas (to  X11 in fact) 
>  from are one and the same  or they are different? My guess they are different.
> 
>   Valeri
> 
> > Tony
> > 
> > -----Original Message-----
> > From: Valeri Fine [mailto:fine@bnl.gov]
> > Sent: Friday, January 04, 2002 14:46
> > To: Colley, Tony; roottalk@pcroot.cern.ch
> > Subject: Re: [ROOT] ROOT/QtROOT within a multithreaded Qt application
> > 
> > 
> > > I **am** able to create a popup window using only Qt widgets from the
> > > simulation thread, so it appears that my Linux, X11R6 and Qt are properly
> > > setup to support threads. I would rather not have to rewrite ROOT to use
> > > only Qt widgets.
> > > 
> > > I have looked at the Qt document "Thread Support in Qt", and at the
> > Threads
> > > chapter in the ROOT Users Guide, and I have looked at the roottalk
> > messages
> > > that were found by searching the ROOT website. I have also read through
> > > http://go4.gsi.de/Threads/tthread.htm (where item 1.2.4 seems to indicate
> > > that there is no hope). I may have missed something, of course, so feel
> > free
> > > to call me whatever names you prefer as long as you also clearly point me
> > > wherever the "blatantly obvious solution" is documented.
> > 
> >   Have you paid your attention some Qt function can be called from the 
> >   Qt GUI thread ONLY ?
> > 
> > > 
> > > Any other helpful hints, suggestions, or fixes would also be appreciated.
> > > 
> > > Tony Colley
> > > 
> > > ITT Industries A/CD
> > > Fort Wayne, IN  USA
> > > Tony.Colley@itt.com
> > 
> > ************************************ 
> > If this email is not intended for you, or you are not responsible for the
> > delivery of this message to the addressee, please note that this message may
> > contain ITT Privileged/Proprietary Information.  In such a case, you may not
> > copy or deliver this message to anyone.  You should destroy this message and
> > kindly notify the sender by reply email.  Information contained in this
> > message that does not relate to the business of ITT is neither endorsed by
> > nor attributable to ITT. 
> > ************************************ 
> > 
> 



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:37 MET