summaryrefslogtreecommitdiff
path: root/libs/ardour/route.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2020-04-02 19:47:01 +0200
committerRobin Gareus <robin@gareus.org>2020-04-02 20:27:51 +0200
commitf0b25a776be955903dd0589720ce521990d89db5 (patch)
tree1f9b5c216cfab0aab142b776f0356ab93997fcb0 /libs/ardour/route.cc
parent652f62f20a8469c6c82ff56ea599eb12d78f515f (diff)
Update fan-out signal
* Signals use camelcase. * use a static signal, independent of the route Previously the signal was handled by RouteUI, which caused various issues: * the RouteUI may not yet be available * There may be many RouteUIs for a single Route (mixer, editor-mixer, meter-bridge strips)
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;
}