]> git.saurik.com Git - wxWidgets.git/blobdiff - src/unix/timerunx.cpp
fix typo in r57455 which totally broke modal dialogs display (close #10291)
[wxWidgets.git] / src / unix / timerunx.cpp
index 9c7468ea53c28e140dc09264ecb22c4953ac377e..c3c563af04ff219d91dfd0a8c20c31f3bf94d699 100644 (file)
@@ -29,6 +29,7 @@
     #include "wx/event.h"
 #endif
 
+#include "wx/apptrait.h"
 #include "wx/longlong.h"
 
 #include <sys/time.h>
@@ -37,7 +38,7 @@
 #include "wx/unix/private/timer.h"
 
 #include "wx/listimpl.cpp"
-WX_DEFINE_LIST(wxTimerList);
+WX_DEFINE_LIST(wxTimerList)
 
 // trace mask for the debugging messages used here
 #define wxTrace_Timer wxT("timer")
@@ -171,7 +172,11 @@ 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);
         }
 
@@ -256,5 +261,10 @@ wxUsecClock_t wxGetLocalTimeUsec()
     return wxGetLocalTimeMillis() * 1000L;
 }
 
+wxTimerImpl *wxConsoleAppTraits::CreateTimerImpl(wxTimer *timer)
+{
+    return new wxUnixTimerImpl(timer);
+}
+
 #endif // wxUSE_TIMER