]> git.saurik.com Git - wxWidgets.git/commitdiff
Added wxMessageQueue::Clear().
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 22 May 2010 16:14:16 +0000 (16:14 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 22 May 2010 16:14:16 +0000 (16:14 +0000)
This method can be called from the posting thread to remove any still pending
requests if they became unnecessary.

Closes #10905.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64386 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
include/wx/msgqueue.h
interface/wx/msgqueue.h

index 43902e13105326b68e68f4808857bedc7c164d3f..1a5094794339ed761165e842eab1e434dca3eb34 100644 (file)
@@ -448,6 +448,7 @@ All:
 - Added wxTranslations class to allow localization without changing locale.
 - Added wxResourceTranslationsLoader for loading translations from Windows
   resources.
+- Added wxMessageQueue::Clear().
 
 Unix:
 
index eaf64c05ae84183e233b293a70af5a9647e1612b..03d9f587c9ca26186d6af51818b8b4667e564da0 100644 (file)
@@ -72,6 +72,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().
index 3c3432f8a22959d0d75492deb83c98f4a45303d4..3147dcc7a98c988245c98d2f63309f0a7443491f 100644 (file)
@@ -20,6 +20,8 @@
     should terminate as there is no other way to gracefully shutdown a thread
     waiting on the message queue.
 
+    @since 2.9.0
+
     @nolibrary
     @category{threading}
 
@@ -35,6 +37,17 @@ public:
     */
     wxMessageQueue();
 
+    /**
+        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.
+
+        @since 2.9.1
+     */
+    wxMessageQueueError Clear();
+
     /**
         Returns @true if the object had been initialized successfully, @false
         if an error occurred.