fix crash in butler when destroying before thread is started
This commit is contained in:
@@ -76,6 +76,7 @@ class LIBARDOUR_API Butler : public SessionHandleRef
|
||||
};
|
||||
|
||||
pthread_t thread;
|
||||
bool have_thread;
|
||||
Glib::Threads::Mutex request_lock;
|
||||
Glib::Threads::Cond paused;
|
||||
bool should_run;
|
||||
|
||||
@@ -43,6 +43,7 @@ namespace ARDOUR {
|
||||
Butler::Butler(Session& s)
|
||||
: SessionHandleRef (s)
|
||||
, thread()
|
||||
, have_thread (false)
|
||||
, audio_dstream_capture_buffer_size(0)
|
||||
, audio_dstream_playback_buffer_size(0)
|
||||
, midi_dstream_buffer_size(0)
|
||||
@@ -126,16 +127,18 @@ Butler::start_thread()
|
||||
}
|
||||
|
||||
//pthread_detach (thread);
|
||||
|
||||
have_thread = true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
Butler::terminate_thread ()
|
||||
{
|
||||
void* status;
|
||||
queue_request (Request::Quit);
|
||||
pthread_join (thread, &status);
|
||||
if (have_thread) {
|
||||
void* status;
|
||||
queue_request (Request::Quit);
|
||||
pthread_join (thread, &status);
|
||||
}
|
||||
}
|
||||
|
||||
void *
|
||||
|
||||
Reference in New Issue
Block a user