diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2007-02-26 04:37:32 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2007-02-26 04:37:32 +0000 |
commit | 54f18f26d4731ebda625776f8850ea8ff4dcc79e (patch) | |
tree | fb8472023d9690e53af35b23b7bf052f11278ef1 /libs | |
parent | 1e352b699edad2b08f79206af1d2e462a19b44ef (diff) |
fix for #1503, crash on new session in write-protected dir
git-svn-id: svn://localhost/ardour2/trunk@1510 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/session_butler.cc | 10 | ||||
-rw-r--r-- | libs/ardour/session_midi.cc | 20 | ||||
-rw-r--r-- | libs/ardour/session_state.cc | 2 |
3 files changed, 19 insertions, 13 deletions
diff --git a/libs/ardour/session_butler.cc b/libs/ardour/session_butler.cc index 6c3fdea7e6..16c8d9cffa 100644 --- a/libs/ardour/session_butler.cc +++ b/libs/ardour/session_butler.cc @@ -103,10 +103,12 @@ Session::start_butler_thread () void Session::terminate_butler_thread () { - void* status; - char c = ButlerRequest::Quit; - ::write (butler_request_pipe[1], &c, 1); - pthread_join (butler_thread, &status); + if (butler_thread) { + void* status; + char c = ButlerRequest::Quit; + ::write (butler_request_pipe[1], &c, 1); + pthread_join (butler_thread, &status); + } } void diff --git a/libs/ardour/session_midi.cc b/libs/ardour/session_midi.cc index ad6ea5654a..4c899d5909 100644 --- a/libs/ardour/session_midi.cc +++ b/libs/ardour/session_midi.cc @@ -1114,15 +1114,17 @@ Session::start_midi_thread () void Session::terminate_midi_thread () { - MIDIRequest* request = new MIDIRequest; - void* status; - - request->type = MIDIRequest::Quit; - - midi_requests.write (&request, 1); - poke_midi_thread (); - - pthread_join (midi_thread, &status); + if (midi_thread) { + MIDIRequest* request = new MIDIRequest; + void* status; + + request->type = MIDIRequest::Quit; + + midi_requests.write (&request, 1); + poke_midi_thread (); + + pthread_join (midi_thread, &status); + } } void diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index ea35e853ec..69c47d2f08 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -183,6 +183,8 @@ Session::first_stage_init (string fullpath, string snapshot_name) current_trans = 0; first_file_data_format_reset = true; first_file_header_format_reset = true; + butler_thread = (pthread_t) 0; + midi_thread = (pthread_t) 0; AudioDiskstream::allocate_working_buffers(); |