fix for #1503, crash on new session in write-protected dir

git-svn-id: svn://localhost/ardour2/trunk@1510 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2007-02-26 04:37:32 +00:00
parent 1e352b699e
commit 54f18f26d4
4 changed files with 35 additions and 23 deletions

View file

@ -1866,15 +1866,20 @@ ARDOUR_UI::new_session (std::string predetermined_path)
uint32_t nphysin = (uint32_t) new_session_dialog->input_limit_count();
uint32_t nphysout = (uint32_t) new_session_dialog->output_limit_count();
build_session (session_path,
session_name,
cchns,
mchns,
iconnect,
oconnect,
nphysin,
nphysout,
engine->frame_rate() * 60 * 5);
if (build_session (session_path,
session_name,
cchns,
mchns,
iconnect,
oconnect,
nphysin,
nphysout,
engine->frame_rate() * 60 * 5)) {
response = Gtk::RESPONSE_NONE;
new_session_dialog->reset ();
continue;
}
}
}
}
@ -1973,7 +1978,8 @@ ARDOUR_UI::build_session (const string & path, const string & snap_name,
catch (...) {
error << string_compose(_("Session \"%1 (snapshot %2)\" did not load successfully"), path, snap_name) << endmsg;
MessageDialog msg (string_compose(_("Could not create session in \"%1\""), path));
msg.run ();
return -1;
}

View file

@ -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

View file

@ -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

View file

@ -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();