Add API to query if an instrument was fanned out
Since fan-out happens (interactively) in the GUI thread, we need to keep track of this, in order to prevent later auto-connection of the track to the master-bus.
This commit is contained in:
parent
e4232197fe
commit
a7a938275f
@ -511,6 +511,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
boost::shared_ptr<Processor> the_instrument() const;
|
boost::shared_ptr<Processor> the_instrument() const;
|
||||||
InstrumentInfo& instrument_info() { return _instrument_info; }
|
InstrumentInfo& instrument_info() { return _instrument_info; }
|
||||||
|
bool instrument_fanned_out () const { return _instrument_fanned_out;}
|
||||||
|
|
||||||
|
|
||||||
/* "well-known" controls.
|
/* "well-known" controls.
|
||||||
@ -661,6 +662,7 @@ protected:
|
|||||||
FedBy _fed_by;
|
FedBy _fed_by;
|
||||||
|
|
||||||
InstrumentInfo _instrument_info;
|
InstrumentInfo _instrument_info;
|
||||||
|
bool _instrument_fanned_out;
|
||||||
Location* _loop_location;
|
Location* _loop_location;
|
||||||
|
|
||||||
virtual ChanCount input_streams () const;
|
virtual ChanCount input_streams () const;
|
||||||
|
@ -123,6 +123,7 @@ Route::Route (Session& sess, string name, PresentationInfo::Flag flag, DataType
|
|||||||
, _recordable (true)
|
, _recordable (true)
|
||||||
, _have_internal_generator (false)
|
, _have_internal_generator (false)
|
||||||
, _default_type (default_type)
|
, _default_type (default_type)
|
||||||
|
, _instrument_fanned_out (false)
|
||||||
, _loop_location (NULL)
|
, _loop_location (NULL)
|
||||||
, _track_number (0)
|
, _track_number (0)
|
||||||
, _strict_io (false)
|
, _strict_io (false)
|
||||||
@ -1158,6 +1159,7 @@ Route::add_processors (const ProcessorList& others, boost::shared_ptr<Processor>
|
|||||||
&& boost::dynamic_pointer_cast<PluginInsert> (the_instrument ()) == fanout) {
|
&& boost::dynamic_pointer_cast<PluginInsert> (the_instrument ()) == fanout) {
|
||||||
/* This adds new tracks or busses, and changes connections.
|
/* This adds new tracks or busses, and changes connections.
|
||||||
* This cannot be done here, and needs to be delegated to the GUI thread. */
|
* This cannot be done here, and needs to be delegated to the GUI thread. */
|
||||||
|
_instrument_fanned_out = true;
|
||||||
FanOut (boost::dynamic_pointer_cast<ARDOUR::Route>(shared_from_this())); /* EMIT SIGNAL */
|
FanOut (boost::dynamic_pointer_cast<ARDOUR::Route>(shared_from_this())); /* EMIT SIGNAL */
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -1698,6 +1700,9 @@ void
|
|||||||
Route::reset_instrument_info ()
|
Route::reset_instrument_info ()
|
||||||
{
|
{
|
||||||
boost::shared_ptr<Processor> instr = the_instrument();
|
boost::shared_ptr<Processor> instr = the_instrument();
|
||||||
|
if (!instr) {
|
||||||
|
_instrument_fanned_out = false;
|
||||||
|
}
|
||||||
_instrument_info.set_internal_instrument (instr);
|
_instrument_info.set_internal_instrument (instr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user