From 6535d7ed97d39a2dae5bded54bb760a76452703c Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 1 Mar 2025 18:19:04 +0100 Subject: [PATCH] Unset last-capture sources when saving session This prevents accidental deletes of files saved to disk after the fact. e.g. * save, delete last capture, quit w/o save. * save, switch-snapshot, delete last capture. --- libs/ardour/session.cc | 1 - libs/ardour/session_state.cc | 7 +++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index f40b60e77d..aa1cf4bf73 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -4866,7 +4866,6 @@ Session::reset_last_capture_sources () continue; } tr->reset_last_capture_sources (); - } } diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index d4627c40cc..a8b785852a 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -774,6 +774,13 @@ Session::save_state (string snapshot_name, bool pending, bool switch_to_snapshot XMLTree tree; std::string xml_path(_session_dir->root_path()); + if (!pending) { + /* Prevent destructive edits after explicit save or snapshot changes. + * Otherwise this one can delete sources used by other snapshot + */ + reset_last_capture_sources (); + } + /* prevent concurrent saves from different threads */ Glib::Threads::Mutex::Lock lm (save_state_lock);