Wait for the butler to be quiescent before starting
authorCarl Hetherington <carl@carlh.net>
Wed, 26 Oct 2011 15:14:16 +0000 (15:14 +0000)
committerCarl Hetherington <carl@carlh.net>
Wed, 26 Oct 2011 15:14:16 +0000 (15:14 +0000)
export of each range, rather than just the first one.
Prevents clashes with both the butler and the export
code doing track refills at the same time (may fix
#4283).

git-svn-id: svn://localhost/ardour2/branches/3.0@10307 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/ardour/session_export.cc

index dffe6582f2c4becb17590666e7a1be8e517ea45d..7737e952796a8735ff89260fe12f81260ed159da 100644 (file)
@@ -62,8 +62,6 @@ Session::pre_export ()
 {
        get_export_status (); // Init export_status
 
-       _butler->wait_until_finished ();
-
        /* take everyone out of awrite to avoid disasters */
 
        {
@@ -95,6 +93,7 @@ Session::pre_export ()
        return 0;
 }
 
+/** Called for each range that is being exported */
 int
 Session::start_audio_export (framepos_t position, bool /* realtime */)
 {
@@ -102,6 +101,13 @@ Session::start_audio_export (framepos_t position, bool /* realtime */)
                pre_export ();
        }
 
+       /* We're about to call Track::seek, so the butler must have finished everything
+          up otherwise it could be doing do_refill in its thread while we are doing
+          it here.
+       */
+       
+       _butler->wait_until_finished ();
+
        /* get everyone to the right position */
 
        {