Valery, > Anton, why each time one has to ask you one and the same thing > to be provided ? > > - A simple test or example to reproduce the problem. > - If you have found a problem reason and fix it then the correction > and test are appreciated. > > Can you memorize that ;-) NOT AT ALL AND I AM NOT GOING TO SIMPLY BACAUSE THIS IS NOT MY PROJECT! (check out ROOT copyrights) can you memorize this :) PS. Although if I can find a bug quickly, etc. I have no probs to help/report. I have asked a number of times : If you DO NOT SUPPORT ROOT ON WINDOWS tell me and others please, because people rely (read: depend) on you. We are talking about BACKGROUNDS of ROOT framework. A single shot timer. XXI century. Whatta f@#$. Cheers, Anton http://www.smartquant.com ----- Original Message ----- From: "Valeri Fine" <fine@bnl.gov> To: "Anton Fokin" <anton.fokin@smartquant.com>; "roottalk" <roottalk@pcroot.cern.ch> Sent: Monday, March 18, 2002 6:41 PM Subject: Re: [ROOT] Another bug in TTimer on windows > > ----- Original Message ----- > From: "Anton Fokin" <anton.fokin@smartquant.com> > To: "roottalk" <roottalk@pcroot.cern.ch> > Sent: Monday, March 18, 2002 6:31 AM > Subject: [ROOT] Another bug in TTimer on windows > > > > Hello, > > > > single shot async mode doesn't work under windows (dont know about Linux) > > > > This below doesn't trigger timer (HandleTimer) at all > > > > fTimer = new TTimer(this, 1000, kFALSE); > > fTimer->Start(1000, kTRUE); > > > > Although this > > > > fTimer = new TTimer(this, 1000, kFALSE); > > fTimer->Start(1000); > > > > does (constantly). > > Anton, why each time one has to ask you one and the same thing > to be provided ? > > - A simple test or example to reproduce the problem. > - If you have found a problem reason and fix it then the correction > and test are appreciated. > > Can you memorize that ;-) > > Coming back to the problem you reported: > > I did not know about Start method. > I've looked it up. From the first glance it is NOT correct. > http://root.cern.ch/root/html/src/TTimer.cxx.html#TTimer:Start > > void TTimer::Start(Int_t milliSec, Bool_t singleShot) > { > if (milliSec >= 0) > SetTime(milliSec); > Reset(); > TurnOn(); > if (singleShot) > Connect(this, "Timeout()", "TTimer", this, "TurnOff()"); > else > Disconnect(this, "Timeout()", this, "TurnOff()"); > } > > My guess the methods Connect/Disconnect may have been called too late. > To avoid the problem I would recommend to change the order of the methods above, namely: > > void TTimer::Start(Int_t milliSec, Bool_t singleShot) > { > if (milliSec >= 0) > SetTime(milliSec); > Reset(); > // TurnOn(); // move this statement > if (singleShot) > Connect(this, "Timeout()", "TTimer", this, "TurnOff()"); > else > Disconnect(this, "Timeout()", this, "TurnOff()"); > TurnOn(); // New position of the method > } > > I mean FIRST the signal/slot connection must be established and THEN the timer > should be fired but ... TurnOn > http://root.cern.ch/root/html/src/TTimer.cxx.html#TTimer:TurnOn > calls > > Disconnect(this, "Timeout()", this, "TurnOff()"); > > ??? That is NOT what we want for the single shot case. > > I wonder if one can provide the timeout that is long enough to get Signal/Slot > connection made established then everything should (?) work properly with no change. > > Can one check this ? > Thank you > Best regards, Valeri > > > > > /Anton > > > > http://www.smartquant.com > > > > > > > > >
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:46 MET