summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/ardour_ui.cc26
-rw-r--r--libs/ardour/session_butler.cc10
-rw-r--r--libs/ardour/session_midi.cc20
-rw-r--r--libs/ardour/session_state.cc2
4 files changed, 35 insertions, 23 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index 8823ad8ad0..c6db2716c5 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -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;
}
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();