- wxLogTrace( wxT("timer"),
- wxT("notified timer %p sheduled for %" wxLongLongFmtSpec),
- desc->timer, desc->shotTime );
-
- desc->deleteFlag = NULL;
- if ( !oneShot )
- QueueTimer(desc, now + desc->timer->GetInterval());
+ oneShot = desc->timer->IsOneShot();
+ RemoveTimer(desc);
+
+ timerDeleted = false;
+ desc->deleteFlag = &timerDeleted;
+ desc->timer->Notify();
+
+ if ( !timerDeleted )
+ {
+ wxLogTrace( wxT("timer"),
+ wxT("notified timer %p sheduled for %")
+ wxTimerTickFmtSpec,
+ desc->timer,
+ wxTimerTickPrintfArg(desc->shotTime) );
+
+ desc->deleteFlag = NULL;
+ if ( !oneShot )
+ QueueTimer(desc, now + desc->timer->GetInterval());
+ }
+ else
+ {
+ desc = m_timers;
+ if (!desc)
+ break;
+ }