summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2019-07-18 10:17:05 -0600
committerPaul Davis <paul@linuxaudiosystems.com>2019-07-18 10:53:34 -0600
commit5f8c9a4e607036bdbea0e06f2b9aa50e63ee4943 (patch)
tree788a59e0d5afa72a35122c5bc25a9f7eb4f962ea /gtk2_ardour
parent473fd45ca2886682ad28c389c16704dabe6fc3d1 (diff)
if a user specifies just a session name (not path) and it does not exist, use the default session folder
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/ardour_ui.cc20
1 files changed, 19 insertions, 1 deletions
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);
+ }
}
}