summaryrefslogtreecommitdiff
path: root/libs/ardour/route.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/route.cc')
-rw-r--r--libs/ardour/route.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index af7e0890e7..36620d8adf 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -103,6 +103,8 @@ using namespace PBD;
PBD::Signal3<int,boost::shared_ptr<Route>, boost::shared_ptr<PluginInsert>, Route::PluginSetupOptions > Route::PluginSetup;
+PBD::Signal1<void, boost::weak_ptr<Route> > Route::FanOut;
+
/** Base class for all routable/mixable objects (tracks and busses) */
Route::Route (Session& sess, string name, PresentationInfo::Flag flag, DataType default_type)
: Stripable (sess, name, PresentationInfo (flag))
@@ -1151,7 +1153,9 @@ Route::add_processors (const ProcessorList& others, boost::shared_ptr<Processor>
if (fanout && fanout->configured ()
&& fanout->output_streams().n_audio() > 2
&& boost::dynamic_pointer_cast<PluginInsert> (the_instrument ()) == fanout) {
- fan_out (); /* EMIT SIGNAL */
+ /* This adds new tracks or busses, and changes connections.
+ * This cannot be done here, and needs to be delegated to the GUI thread. */
+ FanOut (boost::dynamic_pointer_cast<ARDOUR::Route>(shared_from_this())); /* EMIT SIGNAL */
}
return 0;
}