RE: [ROOT] Window refresh using Win2K and GDK

From: ANCIANT E. (eric_anciant@sodern.fr)
Date: Fri Jan 09 2004 - 12:09:26 MET


Hello Valeri

Many thanks for your explanations, 
I will try I soon as I can the Qt-edition
With win32 I indeed faced crash problems, but the work-arround was simple :
pause the execution of the application before playing
with the canvas (i.e no execution driven modification of the canvas content
while I was resizing, zooming histograms, etc.. )

I would say the standard X11 behaviour is fine with me (I used root on Sun &
Linux before, I m not going to change
my excelent opinion about this great utility now :-) ) 

Coming back to the GDK version, I got almost the same behaviour than before
by launching app.Run(kTrue) instead of my standard 
keyboard "hit the key" pausing. In order to go back to my application, I now
therefore need to go to the menu "File/QUIT root".
The best would be now for me to add "continue" button / menu.

best regards,

eric




> -----Message d'origine-----
> De:	Valeri Fine [SMTP:fine@bnl.gov]
> Date:	jeudi 8 janvier 2004 18:37
> :	'ANCIANT E.'; 'Brandon Kohn'; 'roottalk@root.cern.ch'
> Objet:	RE: [ROOT] Window refresh using Win2K and  GDK
> 
> Hello Eric, 
> 
> With GDK you observe the "standard' ROOT behavior.
> 
> What you had seen with Win32 version was some "free" bonus ("side
> effect") due extra thread eliminated within GDK. Even though this
> behavior is still present with Qt-edition of ROOT and still provided
> with Win32 flavor, I would not have advised to relay on "non"-standard
> "side effect".
>   I believe there was a good reason to do GDK. This way GDK can support
> some nice ROOT features those were not available for Windows user due
> occasional system crash.
> There reason for those crashes was the call of the non-tread-safe pieces
> of ROOT code from the concurrent Win32 threads. 
> Eliminating one thread GDK author has reduced the probability of such
> clashes.
> 
> I was going to do the same thing with Qt-edition (http://root.bnl.gov).
> Now I'll try to think a little bit to find a way preserving "your" side
> effect :-)
> 
> ----
> Best regards
>                    Valeri
> 
> 
> > -----Original Message-----
> > From: ANCIANT E. [mailto:eric_anciant@sodern.fr]
> > Sent: Thursday, January 08, 2004 11:36 AM
> > To: 'Brandon Kohn'; ANCIANT E.; 'Valeri Fine'; 'Rene Brun';
> > 'roottalk@root.cern.ch'
> > Subject: RE: [ROOT] Window refresh using Win2K and GDK
> > 
> > I am using ( latest ) version : root_v3.10.02.win32gdk_Debug
> > 
> > In order to clarify my point, look the slightly modified example
> below,
> > with the app.Run() call at the end of the program,
> > if I try to resize the window DURING the loop the canvas/pad doesn't
> get
> > resized,
> > it will be only once the execution reaches app.Run()
> > 
> > This behaviour is new to me, since resizing the canvas DURING
> execution (and
> > without instanciating
> > TApplication or running it) was possible with the old root 3.02 I had
> been
> > using (for a while.. )
> > 
> > I was just wondering if this is a desired ( recommanded ? ) behaviour
> ..
> > seems that before the Update() method could detect that the OS-window
> size
> > changed, and not anymore
> > 
> > In fact, with the old 3.02 version I could pause execution from within
> my
> > program, save canvas under poscript files for example
> > (the canvas menus were there) and then restart the execution by
> hitting a
> > keyboard key (all this with no TApplication instance)
> > I am not sure of how I should do such a thing now, calling
> > TApplication::Run() "freeze" the execution of my application;
> > or is there a way to return from that call into the main execution
> program ?
> > In my test-example below for example how can I continue the execution
> of the
> > rest of the program if I uncomment the first
> > app.Run() ?
> > 
> > Thanks for your patience ...
> > 
> > eric
> > 
> > 
> >  -- QUOTE --
> > 
> > #include "TApplication.h"
> > #include "TSystem.h"
> > #include "TEnv.h"
> > #include "TH1.h"
> > #include "TCanvas.h"
> > 
> > #include <iostream>
> > using namespace std;
> > 
> > //#include <iostream.h>
> > 
> > int main(int argc, char* argv[])
> > {
> > 	cout << " Using ROOTSYS " << gSystem->Getenv("ROOTSYS") << endl;
> > 	cout << " Using DYNAMIC PATH "
> > 		<< gEnv->GetValue("WinNT.*.Root.DynamicPath","NOT
> DEFINED")
> > << endl;
> > 	cout << " Using MACRO PATH "
> > 		<< gEnv->GetValue("WinNT.*.Root.MacroPath","NOT
> DEFINED") <<
> > endl;
> > 
> >     TApplication app("app",0,0);
> > 	TCanvas can("toto","titi",300,300);
> > 
> > 	TH1F histo("histo","histo",10,-3,3);
> > 	int i;
> > //	app.Run();
> > 	for (i=0;i<1000;i++ ) {
> > 		histo.FillRandom("gaus",10);
> > 		histo.Draw();
> > 		gPad->Update();
> > 	}
> > 	app.Run();
> > 
> > 	cin >> i;
> > 
> > 	return 0;
> > }
> > 
> > -------------------------- QUOTE COMPILATION :
> > 
> > --------------------Configuration: TestConsole - Win32
> > Debug--------------------
> > Compiling...
> > Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for
> 80x86
> > Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
> > cl /G5 /MD /GR /I "p:\root_v3.10.02.win32gdk_Debug/include" /D "WIN32"
> /D
> > "_DEBUG" /D "_WIN32" /D "_MT" /D "VISUAL_CPLUSPLUS" /D "_WINDOWS"
> > /Fo"Debug/" /Fd"Debug/" /FD /EHsc /c
> >    "P:\APS_LOCAL\TESTROOT\TestConsole\TestConsole.cpp"
> > TestConsole.cpp
> > Linking...
> > Microsoft (R) Incremental Linker Version 6.00.8168
> > Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
> > kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib
> advapi32.lib
> > shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib
> > kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib
> advapi32.lib
> > shell32.lib ole32.lib oleaut32.lib
> > uuid.lib odbc32.lib odbccp32.lib gdk-1.3.lib glib-1.3.lib libCint.lib
> > libCore.lib libEG.lib libEGPythia6.lib libfreetype.lib libFumili.lib
> > libGeom.lib libGeomPainter.lib libGpad.lib libGraf.lib libGraf3d.lib
> > libGui.lib libHbook.lib libHist.lib libHi
> > stPainter.lib libHtml.lib libMatrix.lib libMinuit.lib libMLP.lib
> > libPhysics.lib libPostscript.lib libProof.lib libProofGui.lib
> libRFIO.lib
> > libRGL.lib libRint.lib libTable.lib libTree.lib libTreePlayer.lib
> > libTreeViewer.lib libVMC.lib libWin32gdk.lib
> >  /pdb:none /debug /machine:IX86 "/out:Debug/TestConsole.exe"
> > "/libpath:p:/root_v3.10.02.win32gdk_Debug/lib" -opt:ref
> > /subsystem:console,4.0
> > .\Debug\TestConsole.obj
> > 
> > TestConsole.exe - 0 error(s), 0 warning(s)
> > 
> > ------------------- QUOTE : Console ouput
> > 
> > Using ROOTSYS p:\root_v3.10.02.win32gdk_Debug
> > Using DYNAMIC PATH
> >
> .;p:\root_v3.10.02.win32gdk_Debug/bin;C:\WINNT\system32;C:\WINNT;C:\WINN
> T\Sy
> >
> stem32\Wbem;C:\DLL-PWB-OLD;C:\DLL-PWB-NEW;w:\oracle\ora81\bin;w:\oracle\
> jre\
> >
> 1.1.7\bin;W:\ORAWIN\BIN;p:\root_v3.10.02.win32gdk_Debug\bin;p:\vni\cnl50
> \bin
> >
> ;p:\rcs;p:\AnciantLocal\FTCCDSensor;p:\anciantlocal\simualgo\main\bin;p:
> \bin
> > ;p:\VS\VC98\bin;p:\Visual Studio\MSDev98\bin
> > Using MACRO PATH .;p:\root_v3.10.02.win32gdk_Debug/macros
> > Error in <TWinNTSystem::BaseName>: name = 0
> > 
> > > -----Message d'origine-----
> > > De:	Brandon Kohn [SMTP:blk@maia-institute.org]
> > > Date:	jeudi 8 janvier 2004 12:15
> > > :	ANCIANT E.; 'Valeri Fine'; 'Rene Brun';
> 'roottalk@root.cern.ch'
> > > Objet:	Re: [ROOT]
> > >
> > > Assuming that you are using the latest version of ROOT, the problem
> with
> > > resizing (really refreshing the canvas) is due to the fact that you
> must
> > > have the instance of the application running it's event loop. This
> is done
> > > using TApplication::Run(); Try placing this at the end of your test
> > > program,
> > > and see if you get resizing behavior then.
> > >
> > > Regards
> > > Brandon
> > > ----- Original Message -----
> > > From: "ANCIANT E." <eric_anciant@sodern.fr>
> > > To: "'Valeri Fine'" <fine@bnl.gov>; "'Brandon Kohn'"
> > > <blk@maia-institute.org>; "'Rene Brun'" <Rene.Brun@cern.ch>;
> > > "'roottalk@root.cern.ch'" <roottalk@pcroot.cern.ch>
> > > Sent: Thursday, January 08, 2004 11:11 AM
> > > Subject: RE: [ROOT]
> > >
> > >
> > > > Thanks a lot for the quick help,
> > > >
> > > > indeed, instanciating one TApplication solve my "pop-up" problem
> > > > no need to have it run ( which is not what I was looking for since
> I use
> > > > Root
> > > > rather as a display facility .. )
> > > >
> > > > however now I got an Error message :
> > > >
> > > > Error in <TWinNTSystem::BaseName>: name = 0
> > > >
> > > > Besides, when I try to resize the window of my canvas (without the
> > > > TApplication instance running),
> > > > the content of the window (Canvas?, pads, histograms ..) don't get
> > > resized.
> > > >
> > > > I don't know if it is linked to the error message.
> > > >
> > > > Or I guess I could wrap everything within the App and launch my
> > > application
> > > > through a button ?
> > > >
> > > > regards,
> > > >
> > > > eric
> > > >
> > > >
> > > >
> > > >
> > > > > -----Message d'origine-----
> > > > > De: Valeri Fine [SMTP:fine@bnl.gov]
> > > > > Date: mercredi 7 janvier 2004 18:23
> > > > > : 'Brandon Kohn'; 'ANCIANT E.'; 'roottalk@root.cern.ch'
> > > > > Objet: RE: [ROOT]
> > > > >
> > > > > I think the reason for your troubles is the "gdk" version.
> > > > > Did you say you did use very "gdk" in past?
> > > > >
> > > > No, it is the first time I try GDK ( before I was using root 3.02
> > > > with win32 )
> > > > >
> > > >
> 



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:05 MET