]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/msgqueue.h
Don't define __STRICT_ANSI__, we should build both with and without it.
[wxWidgets.git] / include / wx / msgqueue.h
index eda5cc992cab2e3dc9acca717cc0e7d8756e2693..8b8da87d183bd73d5b7ad455b3071c929fc1b539 100644 (file)
@@ -1,9 +1,8 @@
 ///////////////////////////////////////////////////////////////////////////////
-// Name:        wx/thread.h
+// Name:        wx/msqqueue.h
 // Purpose:     Message queues for inter-thread communication
 // Author:      Evgeniy Tarassov
 // Created:     2007-10-31
-// RCS-ID:      $Id$
 // Copyright:   (C) 2007 TT-Solutions SARL
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
@@ -19,6 +18,8 @@
 
 #if wxUSE_THREADS
 
+#include "wx/stopwatch.h"
+
 #include "wx/beforestd.h"
 #include <queue>
 #include "wx/afterstd.h"
@@ -70,6 +71,22 @@ public:
         return wxMSGQUEUE_NO_ERROR;
     }
 
+    // Remove all messages from the queue.
+    //
+    // This method is meant to be called from the same thread(s) that call
+    // Post() to discard any still pending requests if they became unnecessary.
+    wxMessageQueueError Clear()
+    {
+        wxCHECK( IsOk(), wxMSGQUEUE_MISC_ERROR );
+
+        wxMutexLocker locker(m_mutex);
+
+        std::queue<T> empty;
+        std::swap(m_messages, empty);
+
+        return wxMSGQUEUE_NO_ERROR;
+    }
+
     // Wait no more than timeout milliseconds until a message becomes available.
     //
     // Setting timeout to 0 is equivalent to an infinite timeout. See Receive().