]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/msgqueue.h
adding a app-defined event seems to quit inner eventloops like eg the popup of the...
[wxWidgets.git] / interface / wx / msgqueue.h
index 5a6347f794f412c988124e6ff7c67aec8a32e887..376625a3f068c9275beccb98064b6ff4abef50aa 100644 (file)
@@ -1,29 +1,57 @@
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
-// Name:        msgqueue.h
+// Name:        wx/msgqueue.h
 // Purpose:     interface of wxMessageQueue<T>
 // Author:      wxWidgets team
 // RCS-ID:      $Id$
 // Purpose:     interface of wxMessageQueue<T>
 // Author:      wxWidgets team
 // RCS-ID:      $Id$
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 /**
 /////////////////////////////////////////////////////////////////////////////
 
 /**
+    Error codes for wxMessageQueue<> operations.
 
 
+    This enum contains the possible return value of wxMessageQueue<> methods.
+
+    @since 2.9.0
+    @category{threading}
+ */
+enum wxMessageQueueError
+{
+    /// Indicates that the operation completed successfully.
+    wxMSGQUEUE_NO_ERROR = 0,
+
+    /**
+        Indicates that no messages were received before timeout expired.
+
+        This return value is only used by wxMessageQueue<>::ReceiveTimeout().
+     */
+    wxMSGQUEUE_TIMEOUT,
+
+    /// Some unexpected (and fatal) error has occurred.
+    wxMSGQUEUE_MISC_ERROR
+};
+
+/**
     wxMessageQueue allows passing messages between threads.
 
     This class should be typically used to communicate between the main and worker
     threads. The main thread calls wxMessageQueue::Post and the worker thread
     calls wxMessageQueue::Receive.
 
     wxMessageQueue allows passing messages between threads.
 
     This class should be typically used to communicate between the main and worker
     threads. The main thread calls wxMessageQueue::Post and the worker thread
     calls wxMessageQueue::Receive.
 
-    For this class a message is an object of arbitrary type T.
+    @tparam T
+        For this class a message is an object of arbitrary type T.
+
     Notice that often there is a some special message indicating that the thread
     should terminate as there is no other way to gracefully shutdown a thread
     waiting on the message queue.
 
     Notice that often there is a some special message indicating that the thread
     should terminate as there is no other way to gracefully shutdown a thread
     waiting on the message queue.
 
+    @since 2.9.0
+
     @nolibrary
     @nolibrary
-    @category{misc}
+    @category{threading}
 
     @see wxThread
 */
 
     @see wxThread
 */
+template <typename T>
 class wxMessageQueue<T>
 {
 public:
 class wxMessageQueue<T>
 {
 public:
@@ -33,6 +61,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
         if an error occurred.
     /**
         Returns @true if the object had been initialized successfully, @false
         if an error occurred.