]> git.saurik.com Git - wxWidgets.git/commitdiff
fixed (?) race condition in the sample
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 23 Feb 2000 19:04:31 +0000 (19:04 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 23 Feb 2000 19:04:31 +0000 (19:04 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6246 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

samples/thread/test.cpp

index e2b4bff257505f9ecc70e21effb684ffec555f7c..be40d23a60855f6b37bba938e19a318fbd76ee0a 100644 (file)
@@ -40,6 +40,9 @@
 
 #include "wx/progdlg.h"
 
+// uncomment this to get some debugging messages from the trace code
+//#define TRACE
+
 class MyThread;
 WX_DEFINE_ARRAY(wxThread *, wxArrayThread);
 
@@ -300,6 +303,10 @@ END_EVENT_TABLE()
 // `Main program' equivalent, creating windows and returning main app frame
 bool MyApp::OnInit()
 {
+#ifdef TRACE
+    wxLog::AddTraceMask("thread");
+#endif
+
     // Create the main frame window
     MyFrame *frame = new MyFrame((wxFrame *)NULL, "wxWindows threads sample",
                                  50, 50, 450, 340);
@@ -427,15 +434,17 @@ void MyFrame::OnStartThread(wxCommandEvent& WXUNUSED(event) )
 
 void MyFrame::OnStopThread(wxCommandEvent& WXUNUSED(event) )
 {
+    wxGetApp().m_critsect.Enter();
+
     // stop the last thread
     if ( wxGetApp().m_threads.IsEmpty() )
     {
         wxLogError("No thread to stop!");
+
+        wxGetApp().m_critsect.Leave();
     }
     else
     {
-        wxGetApp().m_critsect.Enter();
-
         wxThread *thread = wxGetApp().m_threads.Last();
 
         // it's important to leave critical section before calling Delete()
@@ -538,6 +547,11 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event) )
 
 void MyFrame::OnClear(wxCommandEvent& WXUNUSED(event))
 {
+#ifdef TRACE
+    // log a separator
+    wxLogTrace("-------- log window cleared --------");
+#endif
+
     m_txtctrl->Clear();
 }