diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 09912dc95e..f9d09e34c9 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -3285,15 +3285,33 @@ ARDOUR_UI::get_session_parameters (bool quit_on_cancel, bool should_be_new, stri template_name = load_template; } - session_name = basename_nosuffix (ARDOUR_COMMAND_LINE::session_name); session_path = ARDOUR_COMMAND_LINE::session_name; if (!session_path.empty()) { + if (Glib::file_test (session_path.c_str(), Glib::FILE_TEST_EXISTS)) { + + session_name = basename_nosuffix (ARDOUR_COMMAND_LINE::session_name); + if (Glib::file_test (session_path.c_str(), Glib::FILE_TEST_IS_REGULAR)) { /* session/snapshot file, change path to be dir */ session_path = Glib::path_get_dirname (session_path); } + } else { + + /* session (file or folder) does not exist ... did the + * user give us a path or just a name? + */ + + if (session_path.find (G_DIR_SEPARATOR) == string::npos) { + /* user gave session name with no path info, use + default session folder. + */ + session_name = ARDOUR_COMMAND_LINE::session_name; + session_path = Glib::build_filename (Config->get_default_session_parent_dir (), session_name); + } else { + session_name = basename_nosuffix (ARDOUR_COMMAND_LINE::session_name); + } } }