further tweaks to session close
authorRobin Gareus <robin@gareus.org>
Sun, 24 Apr 2016 00:51:23 +0000 (02:51 +0200)
committerRobin Gareus <robin@gareus.org>
Sun, 24 Apr 2016 00:53:01 +0000 (02:53 +0200)
libs/ardour/session.cc

index 3b03985ece78fe1203ba94ee9f40f2097fe98551..efc1665219c274b685ce51ec050112975bf07b08 100644 (file)
@@ -596,6 +596,7 @@ Session::destroy ()
 
        /* disconnect from any and all signals that we are connected to */
 
+       Port::PortSignalDrop (); /* EMIT SIGNAL */
        drop_connections ();
 
        /* shutdown control surface protocols while we still have ports
@@ -616,7 +617,6 @@ Session::destroy ()
         * callbacks from the engine any more.
         */
 
-       Port::PortSignalDrop (); /* EMIT SIGNAL */
        Port::PortDrop (); /* EMIT SIGNAL */
 
        ltc_tx_cleanup();
@@ -1077,11 +1077,16 @@ Session::remove_monitor_section ()
        }
 
        remove_route (_monitor_out);
+       if (_state_of_the_state & Deletion) {
+               return;
+       }
+
        auto_connect_master_bus ();
 
        if (auditioner) {
                auditioner->connect ();
        }
+
        Config->ParameterChanged ("use-monitor-bus");
 }
 
@@ -3557,7 +3562,7 @@ Session::remove_routes (boost::shared_ptr<RouteList> routes_to_remove)
                resort_routes ();
 #endif
 
-       if (_process_graph) {
+       if (_process_graph && !(_state_of_the_state & Deletion)) {
                _process_graph->clear_other_chain ();
        }
 
@@ -3574,6 +3579,10 @@ Session::remove_routes (boost::shared_ptr<RouteList> routes_to_remove)
                (*iter)->drop_references ();
        }
 
+       if (_state_of_the_state & Deletion) {
+               return;
+       }
+
        Route::RemoteControlIDChange(); /* EMIT SIGNAL */
 
        /* save the new state of the world */