]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/timer.cpp
Hopefully fixed library names generated by wx-config for OS/2's PM port.
[wxWidgets.git] / src / generic / timer.cpp
index 24d5888cddcf746af8821614440ab3ac5fc89056..406fb93634419056a9d71da7920e5d95ac145333 100644 (file)
@@ -142,29 +142,32 @@ 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());
+                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;
             }
         }
     }