// have the lowest priority, the second - the highest, all the rest
// the normal one
if ( n == 0 )
- thr->SetPriority(WXTHREAD_MIN_PRIORITY);
+ thr->SetPriority(wxPRIORITY_MIN);
else if ( n == 1 )
- thr->SetPriority(WXTHREAD_MAX_PRIORITY);
+ thr->SetPriority(wxPRIORITY_MAX);
else
- thr->SetPriority(WXTHREAD_DEFAULT_PRIORITY);
+ thr->SetPriority(wxPRIORITY_DEFAULT);
threads.Add(thr);
}
void MyFrame::OnStopThread(wxCommandEvent& WXUNUSED(event) )
{
+ wxThread* toDelete = NULL;
+ {
wxCriticalSectionLocker enter(wxGetApp().m_critsect);
// stop the last thread
}
else
{
- wxGetApp().m_threads.Last()->Delete();
+ toDelete = wxGetApp().m_threads.Last();
+ }
+ }
+
+ if ( toDelete )
+ {
+ // This can still crash if the thread gets to delete itself
+ // in the mean time.
+ toDelete->Delete();
#if wxUSE_STATUSBAR
SetStatusText(wxT("Last thread stopped."), 1);