amend 311adde (LV2-1.0.0 compat)
[ardour.git] / libs / ardour / session_export.cc
index 969f4bb609d81d76ef970962b9faa5fae36e4c07..ea4a07dd1f66cd883a0aa4a4ba1f87d9d1cc92eb 100644 (file)
@@ -21,7 +21,6 @@
 #include "pbd/error.h"
 #include <glibmm/threads.h>
 
-#include <midi++/manager.h>
 #include <midi++/mmc.h>
 
 #include "ardour/audioengine.h"
@@ -89,13 +88,12 @@ Session::pre_export ()
 
        _exporting = true;
        export_status->running = true;
-       export_status->Aborting.connect_same_thread (*this, boost::bind (&Session::stop_audio_export, this));
        export_status->Finished.connect_same_thread (*this, boost::bind (&Session::finalize_audio_export, this));
-       
+
        /* disable MMC output early */
 
-       _pre_export_mmc_enabled = MIDI::Manager::instance()->mmc()->send_enabled ();
-       MIDI::Manager::instance()->mmc()->enable_send (false);
+       _pre_export_mmc_enabled = _mmc->send_enabled ();
+       _mmc->enable_send (false);
 
        return 0;
 }
@@ -106,14 +104,14 @@ Session::start_audio_export (framepos_t position)
 {
        if (!_exporting) {
                pre_export ();
-               _export_started = false;
        }
+       _export_started = false;
 
        /* 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 */
@@ -157,7 +155,7 @@ Session::start_audio_export (framepos_t position)
        return _engine.freewheel (true);
 }
 
-void
+int
 Session::process_export (pframes_t nframes)
 {
        if (_export_rolling && export_status->stop) {
@@ -183,16 +181,18 @@ Session::process_export (pframes_t nframes)
        } catch (std::exception & e) {
                error << string_compose (_("Export ended unexpectedly: %1"), e.what()) << endmsg;
                export_status->abort (true);
+               return -1;
        }
+
+       return 0;
 }
 
 int
 Session::process_export_fw (pframes_t nframes)
 {
-
        if (!_export_started) {
-               _export_started=true;
-               set_transport_speed (1.0, false);
+               _export_started = true;
+               set_transport_speed (1.0, 0, false);
                butler_transport_work ();
                g_atomic_int_set (&_butler->should_do_transport_work, 0);
                post_transport ();
@@ -202,6 +202,7 @@ Session::process_export_fw (pframes_t nframes)
         _engine.main_thread()->get_buffers ();
        process_export (nframes);
         _engine.main_thread()->drop_buffers ();
+
        return 0;
 }
 
@@ -217,26 +218,25 @@ Session::stop_audio_export ()
        _export_rolling = false;
        _butler->schedule_transport_work ();
 
-       if (export_status->aborted()) {
-               finalize_audio_export ();
-       }
-
        return 0;
-
 }
 
 void
 Session::finalize_audio_export ()
 {
        _exporting = false;
-       _export_rolling = false;
+
+       if (_export_rolling) {
+               stop_audio_export ();
+       }
 
        /* Clean up */
 
        _engine.freewheel (false);
+
        export_freewheel_connection.disconnect();
-       
-       MIDI::Manager::instance()->mmc()->enable_send (_pre_export_mmc_enabled);
+
+       _mmc->enable_send (_pre_export_mmc_enabled);
 
        /* maybe write CUE/TOC */