From dd0a73e2d4b6794326dfa1b0170b89567f00de63 Mon Sep 17 00:00:00 2001 From: GZharun Date: Wed, 17 Jun 2015 15:11:07 +0300 Subject: [PATCH] Fixed use case when session is being replaced with new session with the same name. We should check session state file (*.ardour) presence to determine if the session is new for TracksLive as TracksLive has a use case which gives user a possibility to replace existing session by clicking on it's state file when new session is being created. [To be Reviewed by] Paul Davis --- libs/ardour/session_state.cc | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index ac3f8d6518..63deb5453d 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -142,8 +142,18 @@ Session::pre_engine_init (string fullpath) _path = canonical_path(fullpath); /* is it new ? */ - - _is_new = !Glib::file_test (_path, Glib::FileTest (G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)); + if (Profile->get_trx() ) { + // Waves TracksLive has a usecase of session replacement with a new one. + // We should check session state file (.ardour) existance + // to determine if the session is new or not + string full_session_name = Glib::build_filename( fullpath, _name ); + full_session_name += statefile_suffix; + + _is_new = !Glib::file_test (full_session_name, Glib::FileTest (G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)); + } else { + _is_new = !Glib::file_test (_path, Glib::FileTest (G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)); + } + /* finish initialization that can't be done in a normal C++ constructor definition.