]> git.saurik.com Git - wxWidgets.git/commitdiff
add a wxEventType argument to wxThreadEvent for coherency with other event classes...
authorFrancesco Montorsi <f18m_cpp217828@yahoo.it>
Wed, 4 Feb 2009 19:44:55 +0000 (19:44 +0000)
committerFrancesco Montorsi <f18m_cpp217828@yahoo.it>
Wed, 4 Feb 2009 19:44:55 +0000 (19:44 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58661 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/event.h
interface/wx/event.h
samples/thread/thread.cpp

index 307570f7277f9c557781b803861a5756895d49e0..4733d9207c285cab5498b64b5e59698af01357af 100644 (file)
@@ -1073,17 +1073,18 @@ private:
 class WXDLLIMPEXP_CORE wxThreadEvent : public wxCommandEvent
 {
 public:
-    wxThreadEvent(int id = wxID_ANY)
-        : wxCommandEvent(wxEVT_COMMAND_THREAD, id)
+    wxThreadEvent(wxEventType eventType = wxEVT_COMMAND_THREAD, int id = wxID_ANY)
+        : wxCommandEvent(eventType, id)
         { }
 
     virtual wxEvent *Clone() const
     {
-        // make sure our string member (which uses COW aka refcounting) is not
-        // shared by other string instances:
-        const_cast<wxThreadEvent*>(this)->SetString(GetString().c_str());
+        wxThreadEvent* ev = new wxThreadEvent(*this);
 
-        return new wxThreadEvent(*this);
+        // make sure our string member (which uses COW, aka refcounting) is not
+        // shared by other wxString instances:
+        ev->SetString(GetString().c_str());
+        return ev;
     }
 
     // this is important to avoid that calling wxApp::Yield() thread events
index f4ff7a77c508981a350d55eee5742c80a3fc6fcd..c994e77387b043a463d1e6ac8412f4aa0ce9bb09 100644 (file)
@@ -2544,11 +2544,8 @@ class wxThreadEvent : public wxCommandEvent
 public:
     /**
         Constructor.
-
-        Initializes the event type to @c wxEVT_THREAD (but you can change it
-        using wxEvent::SetEventType.
     */
-    wxThreadEvent(int id = wxID_ANY);
+    wxThreadEvent(wxEventType eventType = wxEVT_COMMAND_THREAD, int id = wxID_ANY);
 
     /**
         Clones this event making sure that all internal members which use
@@ -2560,8 +2557,8 @@ public:
     /**
         Returns @c wxEVT_CATEGORY_THREAD.
 
-        This is important to avoid that calling wxApp::Yield() thread events
-        gets processed when this is unwanted:
+        This is important to avoid unwanted processing of thread events
+        when calling wxApp::YieldFor().
     */
     virtual wxEventCategory GetEventCategory() const;
 };
index 2bcdbb87ea2c980819cb216240d77df6040924fd..f5ec942d81f90ff7e8ef6ca1aad2f50d79d676e4 100644 (file)
@@ -292,7 +292,7 @@ void MyWorkerThread::OnExit()
 {
 }
 
-#define TEST_YIELD_RACE_CONDITION       1
+#define TEST_YIELD_RACE_CONDITION       0
 
 void *MyWorkerThread::Entry()
 {
@@ -300,7 +300,7 @@ void *MyWorkerThread::Entry()
     if ( TestDestroy() )
         return NULL;
 
-    wxThreadEvent event( WORKER_EVENT );
+    wxThreadEvent event( wxEVT_COMMAND_THREAD, WORKER_EVENT );
 
     event.SetInt( 50 );
     wxQueueEvent( m_frame, new wxThreadEvent(event) );
@@ -315,7 +315,7 @@ void *MyWorkerThread::Entry()
             break;
 
         // create any type of command event here
-        wxThreadEvent event( WORKER_EVENT );
+        wxThreadEvent event( wxEVT_COMMAND_THREAD, WORKER_EVENT );
         event.SetInt( m_count );
 
         // send in a thread-safe way
@@ -324,7 +324,7 @@ void *MyWorkerThread::Entry()
         wxMilliSleep(200);
     }
 
-    wxThreadEvent event( WORKER_EVENT );
+    wxThreadEvent event( wxEVT_COMMAND_THREAD, WORKER_EVENT );
     event.SetInt(-1); // that's all
     wxQueueEvent( m_frame, new wxThreadEvent(event) );
 #endif