We use those objects unconditionally and without caching inside process(), which could be invoked by the engine during their
deletion
/* shutdown control surface protocols while we still have ports
* and the engine to move data to any devices.
*/
-
- /* remove I/O objects before unsetting the engine session */
- _click_io.reset ();
- _ltc_output.reset ();
-
ControlProtocolManager::instance().drop_protocols ();
/* stop auto dis/connecting */
Port::PortDrop (); /* EMIT SIGNAL */
+ /* remove I/O objects that we (the session) own */
+ _click_io.reset ();
+ _ltc_output.reset ();
+
{
Glib::Threads::Mutex::Lock lm (controllables_lock);
for (Controllables::iterator i = controllables.begin(); i != controllables.end(); ++i) {