]> git.saurik.com Git - wxWidgets.git/blobdiff - src/unix/timerunx.cpp
set m_closed to true when we get connection lost notification
[wxWidgets.git] / src / unix / timerunx.cpp
index 158736fcb3a5a0caa8a68230515d2a15b47488f8..d6ee503df5cf7210437ef27227140b9479f5a706 100644 (file)
@@ -134,10 +134,12 @@ bool wxTimerScheduler::GetNext(wxUsecClock_t *remaining) const
     return true;
 }
 
-void wxTimerScheduler::NotifyExpired()
+bool wxTimerScheduler::NotifyExpired()
 {
     if ( m_timers.empty() )
-      return;
+      return false;
+
+    bool notified = false;
 
     const wxUsecClock_t now = wxGetLocalTimeUsec();
 
@@ -172,13 +174,20 @@ void wxTimerScheduler::NotifyExpired()
         }
         else // reschedule the next timer expiration
         {
-            s->m_expiration += timer->GetInterval()*1000;
+            // always keep the expiration time in the future, i.e. base it on
+            // the current time instead of just offsetting it from the current
+            // expiration time because it could happen that we're late and the
+            // current expiration time is (far) in the past
+            s->m_expiration = now + timer->GetInterval()*1000;
             DoAddTimer(s);
         }
 
         // and finally notify the timer
         timer->Notify();
+        notified = true;
     }
+
+    return notified;
 }
 
 // ============================================================================