attempt to stop transport, finish butler work, and close all files as part of Session...
authorPaul Davis <paul@linuxaudiosystems.com>
Sun, 4 Oct 2015 18:17:52 +0000 (14:17 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Sun, 4 Oct 2015 18:18:04 +0000 (14:18 -0400)
libs/ardour/session_state.cc

index a0651ecbdae3a58bea16557138ff57c6f47ae171..6cc2fb49c8ef119ba909f2b2512cdda3730d5318 100644 (file)
@@ -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<FileSource> (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) {