Added wxMessageQueue::Clear().

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
This commit is contained in:
Vadim Zeitlin
2010-05-22 16:14:16 +00:00
parent 86417abf07
commit d25a864d0a
3 changed files with 30 additions and 0 deletions

View File

@@ -448,6 +448,7 @@ All:
- Added wxTranslations class to allow localization without changing locale. - Added wxTranslations class to allow localization without changing locale.
- Added wxResourceTranslationsLoader for loading translations from Windows - Added wxResourceTranslationsLoader for loading translations from Windows
resources. resources.
- Added wxMessageQueue::Clear().
Unix: Unix:

View File

@@ -72,6 +72,22 @@ public:
return wxMSGQUEUE_NO_ERROR; 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. // Wait no more than timeout milliseconds until a message becomes available.
// //
// Setting timeout to 0 is equivalent to an infinite timeout. See Receive(). // Setting timeout to 0 is equivalent to an infinite timeout. See Receive().

View File

@@ -20,6 +20,8 @@
should terminate as there is no other way to gracefully shutdown a thread should terminate as there is no other way to gracefully shutdown a thread
waiting on the message queue. waiting on the message queue.
@since 2.9.0
@nolibrary @nolibrary
@category{threading} @category{threading}
@@ -35,6 +37,17 @@ public:
*/ */
wxMessageQueue(); 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 Returns @true if the object had been initialized successfully, @false
if an error occurred. if an error occurred.