summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-08-03 18:52:39 +0200
committerRobin Gareus <robin@gareus.org>2017-08-03 19:25:14 +0200
commit8b380a423a4aecfeccb5a26fa418937810b81cef (patch)
tree65eae43ed680b93e0480967fea870f503385f0c9
parent1b5354632fc1f0f2b5f96a07b20d35ac5c64628b (diff)
improve 1a288ddd, destroy IO after disconnecting from signals.
This does not completely fix the race-condition. The GUI (e.g. connection-manager) may still hold a shared-ptr reference.
-rw-r--r--libs/ardour/session.cc14
1 files changed, 7 insertions, 7 deletions
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index 62514f6d36..91f67cf3da 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -644,19 +644,19 @@ Session::destroy ()
_slave = 0;
}
- /* remove I/O objects before unsetting the engine session */
- _click_io.reset ();
- _ltc_input.reset ();
- _ltc_output.reset ();
-
/* 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
- and the engine to move data to any devices.
- */
+ * and the engine to move data to any devices.
+ */
+
+ /* remove I/O objects before unsetting the engine session */
+ _click_io.reset ();
+ _ltc_input.reset ();
+ _ltc_output.reset ();
ControlProtocolManager::instance().drop_protocols ();