From: Paul Davis Date: Sun, 4 Oct 2015 18:17:52 +0000 (-0400) Subject: attempt to stop transport, finish butler work, and close all files as part of Session... X-Git-Tag: 4.3~127 X-Git-Url: https://main.carlh.net/gitweb/?p=ardour.git;a=commitdiff_plain;h=297e80e020da94a56984b20782584bb1dd96ea34 attempt to stop transport, finish butler work, and close all files as part of Session > Cleanup --- diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index a0651ecbda..6cc2fb49c8 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -2935,6 +2935,17 @@ Session::cleanup_sources (CleanupReport& rep) _state_of_the_state = (StateOfTheState) (_state_of_the_state | InCleanup); + /* this is mostly for windows which doesn't allow file + * renaming if the file is in use. But we don't special + * case it because we need to know if this causes + * problems, and the easiest way to notice that is to + * keep it in place for all platforms. + */ + + request_stop (false); + _butler->summon (); + _butler->wait_until_finished (); + /* consider deleting all unused playlists */ if (playlists->maybe_delete_unused (boost::bind (Session::ask_about_playlist_deletion, _1))) { @@ -3008,6 +3019,15 @@ Session::cleanup_sources (CleanupReport& rep) if ((fs = boost::dynamic_pointer_cast (i->second)) != 0) { + /* this is mostly for windows which doesn't allow file + * renaming if the file is in use. But we don't special + * case it because we need to know if this causes + * problems, and the easiest way to notice that is to + * keep it in place for all platforms. + */ + + fs->close (); + if (!fs->is_stub()) { if (playlists->source_use_count (fs) != 0) {