54 class TSingleShotCleaner :
public TTimer {
58 TSingleShotCleaner() : TTimer(10, kTRUE) { fGarbage =
new TList(); }
59 virtual ~TSingleShotCleaner() { fGarbage->Delete();
delete fGarbage; }
61 TObject *obj = (TObject*) gTQSender;
65 gSystem->AddTimer(
this);
71 gSystem->RemoveTimer(
this);
86 TTimer::TTimer(Long_t ms, Bool_t mode) : fTime(ms)
91 fIntSyscalls = kFALSE;
101 TTimer::TTimer(TObject *obj, Long_t ms, Bool_t mode) : fTime(ms)
106 fIntSyscalls = kFALSE;
116 TTimer::TTimer(
const char *command, Long_t ms, Bool_t mode) : fTime(ms)
121 fIntSyscalls = kFALSE;
128 Bool_t TTimer::CheckTimer(
const TTime &now)
130 if (fAbsTime <= now) {
143 Bool_t TTimer::Notify()
146 if (fObject) fObject->HandleTimer(
this);
147 if (fCommand && fCommand.Length() > 0)
148 gROOT->ProcessLine(fCommand);
165 fAbsTime += gSystem->Now();
166 if (!fSync) gSystem->ResetTimer(
this);
174 void TTimer::SetCommand(
const char *command)
184 void TTimer::SetObject(TObject *
object)
197 void TTimer::SetInterruptSyscalls(Bool_t set)
211 void TTimer::Start(Long_t milliSec, Bool_t singleShot)
218 Connect(
this,
"Timeout()",
"TTimer",
this,
"TurnOff()");
220 Disconnect(
this,
"Timeout()",
this,
"TurnOff()");
229 void TTimer::TurnOff()
232 if (gSystem->RemoveTimer(
this))
241 void TTimer::TurnOn()
244 Disconnect(
this,
"Timeout()",
this,
"TurnOff()");
247 gSystem->AddTimer(
this);
256 void TTimer::SingleShot(Int_t milliSec,
const char *receiver_class,
257 void *receiver,
const char *method)
259 TTimer *singleShotTimer =
new TTimer(milliSec);
260 TQObject::Connect(singleShotTimer,
"Timeout()",
261 receiver_class, receiver, method);
263 static TSingleShotCleaner singleShotCleaner;
267 TQObject::Connect(singleShotTimer,
"Timeout()",
268 "TTimer", &singleShotCleaner,
"TurnOn()");
270 singleShotTimer->Start(milliSec, kTRUE);