summaryrefslogtreecommitdiff
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
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)
-rw-r--r--libs/ardour/ardour/route.h7
-rw-r--r--libs/ardour/route.cc6
2 files changed, 10 insertions, 3 deletions
diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h
index 959448881f..61a40fe201 100644
--- a/libs/ardour/ardour/route.h
+++ b/libs/ardour/ardour/route.h
@@ -384,11 +384,14 @@ public:
MultiOut = 0x2,
};
- static PBD::Signal3<int,boost::shared_ptr<Route>, boost::shared_ptr<PluginInsert>, PluginSetupOptions > PluginSetup;
+ /** ask GUI about port-count, fan-out when adding instrument */
+ static PBD::Signal3<int, boost::shared_ptr<Route>, boost::shared_ptr<PluginInsert>, PluginSetupOptions > PluginSetup;
+
+ /** used to signal the GUI to fan-out (track-creation) */
+ static PBD::Signal1<void, boost::weak_ptr<Route> > FanOut;
/** the processors have changed; the parameter indicates what changed */
PBD::Signal1<void,RouteProcessorChange> processors_changed;
- PBD::Signal0<void> fan_out; // used to signal the GUI to fan-out (track-creation)
PBD::Signal1<void,void*> record_enable_changed;
/** a processor's latency has changed
* (emitted from PluginInsert::latency_changed)
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;
}