add Slavable API for VCA assign/unassign
This commit is contained in:
parent
69f67b6198
commit
83e51ee69b
@ -57,6 +57,7 @@
|
||||
#include "ardour/soloable.h"
|
||||
#include "ardour/solo_control.h"
|
||||
#include "ardour/solo_safe_control.h"
|
||||
#include "ardour/slavable.h"
|
||||
|
||||
class RoutePinWindowProxy;
|
||||
|
||||
@ -83,13 +84,14 @@ class SoloIsolateControl;
|
||||
class PhaseControl;
|
||||
class MonitorControl;
|
||||
|
||||
class LIBARDOUR_API Route : public Stripable,
|
||||
class LIBARDOUR_API Route : public GraphNode,
|
||||
public Stripable,
|
||||
public Soloable,
|
||||
public Muteable,
|
||||
public Monitorable,
|
||||
public Automatable,
|
||||
public RouteGroupMember,
|
||||
public GraphNode,
|
||||
public Slavable,
|
||||
public boost::enable_shared_from_this<Route>
|
||||
{
|
||||
public:
|
||||
@ -599,8 +601,6 @@ public:
|
||||
pframes_t nframes, int declick);
|
||||
|
||||
bool slaved_to (boost::shared_ptr<VCA>) const;
|
||||
void vca_assign (boost::shared_ptr<VCA>);
|
||||
void vca_unassign (boost::shared_ptr<VCA>);
|
||||
|
||||
protected:
|
||||
friend class Session;
|
||||
@ -611,7 +611,10 @@ public:
|
||||
void curve_reallocate ();
|
||||
virtual void set_block_size (pframes_t nframes);
|
||||
|
||||
protected:
|
||||
protected:
|
||||
int assign_controls (boost::shared_ptr<VCA>);
|
||||
int unassign_controls (boost::shared_ptr<VCA>);
|
||||
|
||||
virtual framecnt_t check_initial_delay (framecnt_t nframes, framepos_t&) { return nframes; }
|
||||
|
||||
void fill_buffers_with_input (BufferSet& bufs, boost::shared_ptr<IO> io, pframes_t nframes);
|
||||
|
@ -29,6 +29,7 @@
|
||||
#include "ardour/automatable.h"
|
||||
#include "ardour/muteable.h"
|
||||
#include "ardour/soloable.h"
|
||||
#include "ardour/slavable.h"
|
||||
#include "ardour/stripable.h"
|
||||
|
||||
namespace ARDOUR {
|
||||
@ -39,7 +40,7 @@ class SoloControl;
|
||||
class MuteControl;
|
||||
class MonitorControl;
|
||||
|
||||
class LIBARDOUR_API VCA : public Stripable, public Soloable, public Muteable, public Automatable, public boost::enable_shared_from_this<VCA> {
|
||||
class LIBARDOUR_API VCA : public Stripable, public Soloable, public Muteable, public Automatable, public Slavable, public boost::enable_shared_from_this<VCA> {
|
||||
public:
|
||||
VCA (Session& session, uint32_t num, const std::string& name);
|
||||
~VCA();
|
||||
@ -108,6 +109,10 @@ class LIBARDOUR_API VCA : public Stripable, public Soloable, public Muteable, pu
|
||||
virtual std::string send_name (uint32_t n) const { return std::string(); }
|
||||
virtual boost::shared_ptr<AutomationControl> master_send_enable_controllable () const { return boost::shared_ptr<AutomationControl>(); }
|
||||
|
||||
protected:
|
||||
int assign_controls (boost::shared_ptr<VCA>);
|
||||
int unassign_controls (boost::shared_ptr<VCA>);
|
||||
|
||||
private:
|
||||
uint32_t _number;
|
||||
|
||||
|
@ -86,10 +86,10 @@ PBD::Signal3<int,boost::shared_ptr<Route>, boost::shared_ptr<PluginInsert>, Rout
|
||||
|
||||
/** Base class for all routable/mixable objects (tracks and busses) */
|
||||
Route::Route (Session& sess, string name, Flag flg, DataType default_type)
|
||||
: Stripable (sess, name)
|
||||
: GraphNode (sess._process_graph)
|
||||
, Stripable (sess, name)
|
||||
, Muteable (sess, name)
|
||||
, Automatable (sess)
|
||||
, GraphNode (sess._process_graph)
|
||||
, _active (true)
|
||||
, _signal_latency (0)
|
||||
, _signal_latency_at_amp_position (0)
|
||||
@ -5447,16 +5447,18 @@ Route::slaved_to (boost::shared_ptr<VCA> vca) const
|
||||
return _gain_control->slaved_to (vca->gain_control());
|
||||
}
|
||||
|
||||
void
|
||||
Route::vca_assign (boost::shared_ptr<VCA> vca)
|
||||
int
|
||||
Route::assign_controls (boost::shared_ptr<VCA> vca)
|
||||
{
|
||||
_gain_control->add_master (vca->gain_control());
|
||||
_solo_control->add_master (vca->solo_control());
|
||||
_mute_control->add_master (vca->mute_control());
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
Route::vca_unassign (boost::shared_ptr<VCA> vca)
|
||||
int
|
||||
Route::unassign_controls (boost::shared_ptr<VCA> vca)
|
||||
{
|
||||
if (!vca) {
|
||||
/* unassign from all */
|
||||
@ -5468,6 +5470,8 @@ Route::vca_unassign (boost::shared_ptr<VCA> vca)
|
||||
_solo_control->remove_master (vca->solo_control());
|
||||
_mute_control->remove_master (vca->mute_control());
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool
|
||||
|
@ -152,3 +152,30 @@ VCA::clear_all_solo_state ()
|
||||
{
|
||||
_solo_control->clear_all_solo_state ();
|
||||
}
|
||||
|
||||
int
|
||||
VCA::assign_controls (boost::shared_ptr<VCA> vca)
|
||||
{
|
||||
_gain_control->add_master (vca->gain_control());
|
||||
_solo_control->add_master (vca->solo_control());
|
||||
_mute_control->add_master (vca->mute_control());
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
VCA::unassign_controls (boost::shared_ptr<VCA> vca)
|
||||
{
|
||||
if (!vca) {
|
||||
/* unassign from all */
|
||||
_gain_control->clear_masters ();
|
||||
_solo_control->clear_masters ();
|
||||
_mute_control->clear_masters ();
|
||||
} else {
|
||||
_gain_control->remove_master (vca->gain_control());
|
||||
_solo_control->remove_master (vca->solo_control());
|
||||
_mute_control->remove_master (vca->mute_control());
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -211,6 +211,7 @@ libardour_sources = [
|
||||
'session_transport.cc',
|
||||
'sidechain.cc',
|
||||
'slave.cc',
|
||||
'slavable.cc',
|
||||
'slavable_automation_control.cc',
|
||||
'smf_source.cc',
|
||||
'sndfile_helpers.cc',
|
||||
|
Loading…
Reference in New Issue
Block a user