Re: [ROOT] Another bug in TTimer on windows

From: Anton Fokin (anton.fokin@smartquant.com)
Date: Mon Mar 18 2002 - 19:06:18 MET


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