]> git.saurik.com Git - wxWidgets.git/commitdiff
wxTimer::Start() now calls Stop()
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 13 Sep 2000 09:04:48 +0000 (09:04 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 13 Sep 2000 09:04:48 +0000 (09:04 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8347 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/latex/wx/timer.tex
include/wx/timer.h
src/common/timercmn.cpp

index 62ddfb3f1a4d63bc852ab881b76b117110ae2864..97939eb2bae0396c2e2bc4c7b162ab14db919973 100644 (file)
@@ -101,6 +101,9 @@ If {\it oneShot} is FALSE (the default), the \helpref{Notify}{wxtimernotify}
 function will be called repeatedly until the timer is stopped. If TRUE,
 it will be called only once and the timer will stop automatically.
 
+If the timer was already running, it will be stopped by this method before
+restarting it.
+
 \membersection{wxTimer::Stop}\label{wxtimerstop}
 
 \func{void}{Stop}{\void}
index 7ea894d04a1135cd4ab0807d32ec5fcdf1d12711..8c1724df97699b953667afa4f7696ce8af991066 100644 (file)
@@ -54,18 +54,10 @@ public:
 
     // start the timer: if milliseconds == -1, use the same value as for the
     // last Start()
-    virtual bool Start(int milliseconds = -1, bool oneShot = FALSE)
-    {
-        if ( milliseconds != -1 )
-        {
-            m_milli = milliseconds;
-        }
-
-        m_oneShot = oneShot;
-
-        return TRUE;
-    }
-
+    //
+    // it is now valid to call Start() multiple times: this just restarts the
+    // timer if it is already running
+    virtual bool Start(int milliseconds = -1, bool oneShot = FALSE);
 
     // stop the timer
     virtual void Stop() = 0;
index f1173ff1633eed983d2c1366f960a689e4516bd7..e90b5fd4ade7c1fd0cdaa082f304d24588ba9c24 100644 (file)
@@ -115,6 +115,26 @@ void wxTimerBase::Notify()
     (void)m_owner->ProcessEvent(event);
 }
 
+bool wxTimerBase::Start(int milliseconds, bool oneShot)
+{
+    if ( IsRunning() )
+    {
+        // not stopping the already running timer might work for some
+        // platforms (no problems under MSW) but leads to mysterious crashes
+        // on the others (GTK), so to be on the safe side do it here
+        Stop();
+    }
+
+    if ( milliseconds != -1 )
+    {
+        m_milli = milliseconds;
+    }
+
+    m_oneShot = oneShot;
+
+    return TRUE;
+}
+
 #endif // wxUSE_GUI
 
 // ----------------------------------------------------------------------------