Don't issue VersionMismatch when creating a new session
When we create a new session and are using a template from an old version of Ardour, we should not issue the VersionMismatch dialog and not make a copy of the session file for the old version. We need to extend the signature of Session::load_state() to tell it if we are creating a session from a template. Session::_is_new cannot be used for it because it has a the semantics if to auto connect the the master bus.
This commit is contained in:
parent
1439610f95
commit
687b3078c3
@ -1472,7 +1472,7 @@ private:
|
||||
Glib::Threads::Mutex peak_cleanup_lock;
|
||||
|
||||
int load_options (const XMLNode&);
|
||||
int load_state (std::string snapshot_name);
|
||||
int load_state (std::string snapshot_name, bool from_template = false);
|
||||
static int parse_stateful_loading_version (const std::string&);
|
||||
|
||||
samplepos_t _last_roll_location;
|
||||
|
@ -363,7 +363,7 @@ Session::Session (AudioEngine &eng,
|
||||
|
||||
if (!mix_template.empty()) {
|
||||
try {
|
||||
if (load_state (_current_snapshot_name)) {
|
||||
if (load_state (_current_snapshot_name, /* from_template = */ true)) {
|
||||
throw SessionException (_("Failed to load template/snapshot state"));
|
||||
}
|
||||
} catch (PBD::unknown_enumeration& e) {
|
||||
|
@ -970,7 +970,7 @@ Session::restore_state (string snapshot_name)
|
||||
}
|
||||
|
||||
int
|
||||
Session::load_state (string snapshot_name)
|
||||
Session::load_state (string snapshot_name, bool from_template)
|
||||
{
|
||||
delete state_tree;
|
||||
state_tree = 0;
|
||||
@ -1035,7 +1035,7 @@ Session::load_state (string snapshot_name)
|
||||
throw SessionException (string_compose (_("Incomatible Session Version. That session was created with a newer version of %1"), PROGRAM_NAME));
|
||||
}
|
||||
|
||||
if (Stateful::loading_state_version < CURRENT_SESSION_FILE_VERSION && _writable) {
|
||||
if (Stateful::loading_state_version < CURRENT_SESSION_FILE_VERSION && _writable && !from_template) {
|
||||
|
||||
std::string backup_path(_session_dir->root_path());
|
||||
std::string backup_filename = string_compose ("%1-%2%3", legalize_for_path (snapshot_name), Stateful::loading_state_version, statefile_suffix);
|
||||
|
Loading…
Reference in New Issue
Block a user