Re: [ROOT] Windows Graphics/GUI - RE: More on Graphics abstraction (was Re: [ROOT] Qt ROOT)

From: Valeri Fine (fine@bnl.gov)
Date: Sun Oct 28 2001 - 22:06:23 MET


> Hi Valery,
> 
> 
> On Saturday 27 October 2001 22:55, Valeri Fine wrote:
> >
> >  There is no such problem like supporting "Windows". There is the problem
> > of providing the cross platform applications.
> > Try to replace the words "Windows", "MicroSoft" and "crossplatform " above
> > with
> >    "Linux" ,  "UNIX"  "Windows"
> >    "MAC",   "Apple"  "Linux"
> >    "VMS" ,  "Digital"  "UNIX"
> > etc. Have a fun.


> The main issue with cross-platform GUIs is between Win32 and X11
> (and MacOS <10), not between UNIX, VMS, Linux, Digital, etc.
> 

  No it is NOT main issue. 

  The main  issue (or main difference) :
   X11:     We always deal with TWO separate processes, namely X-server and X-client.
               The former is implemented as X-terminal the later is our end-user application

  WIN32: There is no separate X-server process. However we still need "Server" and "Client".
                With WIn32 both things are to be parts of our  end-user application and it is that user 
                 (ROOT team  in our case)   to provide this two parts.

 I'd like to mention one can not say which approach X11 or Win32 is worse / better. 
 Each has its own pro and cons. The problem is risen when we try to create 
"cross GUI" application. and forget "X-server" part. 

> >
> > For exampple it was proved many time the Windows application like ROOT must
> > be multi-threaded.
> > Of course such constrain doesn't make the application desing more simple
> > and cheap.
> >
> > From the Fons's reply I understood the coming Win32 version of ROOT will be
> > single-thread.
> > Does this mean the author of the new Win32 layer thinks one may neglect the
> > multi-thread issue ?
> >
> You misunderstood. Bertrand's implementation runs very well in a single thread
> but without connection to the DOS box. For the DOS box he needs to use 
> a thread. The issue is that Win32 does not have a function like POSIX's
> select() which allows one to monitor activity on different input streams.
> Therefore one needs at least a thread to monitor the DOS box for input.

    I could not misunderstand his implementation  since I did not see it at all.
    But "my theory"  and "experience" say one needs TWO threads at least.

    On another hand  during ROOT2001 workshop Bertrand did ask me how one 
    can implement thing with the only thread and I did tell him how. I wonder if he has 
    implemented that approach. 
    It did  work well for MS DOS version of CERNLIB. However to make it work I had 
    to provide my own implementation of the low lever C run-time stdio subroutines.

    It was great for MS DOS and HIGZ and years ago. I don't think any Windows 2000 
    user will be happy  with such MS DOS  solution.  (It may still work somehow, no doubt)

> > What about ROOT GUI layer vs Qt (or another toolkit). Event though  I did
> > rate the Qt v.3 as
> > a great toolkit that can be used by ROOT project that was said about
> > version 3. THat was released
> > three weeks ago. Of course 7 years ago when the current ROOT GUI (TVirtualX
> > class)  was designed
> > there was nothing like Qt v.3 around.

> Valery, since Qt claims to be cross platform how do you think they hide the
> thread issue? Or, even with Qt, does there remain the DOS box communication
> thread issue? Maybe you could find some time to investigate that. This would
> be of great help.

   Yes the problem still remain even with Qt.
   They did no hide it. They  have no reason to care about that. 
   Qt is a toolkit. From this point view there is no difference between  Qt or 
   direct Win32  (or MFC if you want ) implementation. 
   The multithread design is still the end-user responsibility (i.e. it is ROOT team responsibility)

   This is to say there is no problem to replace WIN32 API with Qt API. However this solves
   NO existent problem of Windows version of  ROOT.  Since they are not coming from API 
   they are coming from "X-client-like " ROOT design.

  I'd like to say since the problem came from "multithread rather from GUI API this problem not
  the Windows version problem.  The UNIX ROOT user must face the same problem just they will 
  want  more / less sophisticated multithread applications. 

  However Qt may help to solve another problem. It is the problem of the single code for both platforms.
 
 There is another solution, namely create Xlib base ROOT for Windows. 
 That's possible and had been discussed too.


  Cheers, Valeri



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:51:05 MET