diff options
author | Robin Gareus <robin@gareus.org> | 2020-04-02 19:47:01 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2020-04-02 20:27:51 +0200 |
commit | f0b25a776be955903dd0589720ce521990d89db5 (patch) | |
tree | 1f9b5c216cfab0aab142b776f0356ab93997fcb0 /libs/ardour/route.cc | |
parent | 652f62f20a8469c6c82ff56ea599eb12d78f515f (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.cc | 6 |
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; } |