]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/timer.cpp
The device origin can be set on WinCE, so use it and redefine conversion
[wxWidgets.git] / src / generic / timer.cpp
index 24d5888cddcf746af8821614440ab3ac5fc89056..b8e4c1e1c7c6d198d5ef757642947ce3ed78bea7 100644 (file)
@@ -142,29 +142,31 @@ void wxTimerScheduler::NotifyTimers()
         bool oneShot;
         volatile bool timerDeleted;
         wxTimerTick_t now = GetMillisecondsTime();
-        wxTimerDesc *desc;
 
-        while ( m_timers && m_timers->shotTime <= now )
+        for ( wxTimerDesc *desc = m_timers; desc; desc = desc->next )
         {
-            desc = m_timers;
-            oneShot = desc->timer->IsOneShot();
-            RemoveTimer(desc);
-
-            timerDeleted = false;
-            desc->deleteFlag = &timerDeleted;
-            desc->timer->Notify();
-
-            if ( !timerDeleted )
+            if ( desc->running && desc->shotTime <= now )
             {
-                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());
+                desc = m_timers;
+                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());
+                }
             }
         }
     }