From 5ea5e513a46f65fe55dcaeb0cb91eb41c79a131c Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sun, 31 Jan 2016 21:47:19 -0500 Subject: make Track::set_monitoring() use a GroupControlDisposition; expose an AutomationControl for track monitoring choice --- libs/ardour/ardour/midi_track.h | 2 +- libs/ardour/ardour/track.h | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) (limited to 'libs/ardour/ardour') diff --git a/libs/ardour/ardour/midi_track.h b/libs/ardour/ardour/midi_track.h index a007757679..ed13832360 100644 --- a/libs/ardour/ardour/midi_track.h +++ b/libs/ardour/ardour/midi_track.h @@ -133,7 +133,7 @@ public: PBD::Signal1 > DataRecorded; boost::shared_ptr get_gui_feed_buffer () const; - void set_monitoring (MonitorChoice); + void set_monitoring (MonitorChoice, PBD::Controllable::GroupControlDisposition); MonitorState monitoring_state () const; void set_input_active (bool); diff --git a/libs/ardour/ardour/track.h b/libs/ardour/ardour/track.h index 39f9a52ec5..dcc0352157 100644 --- a/libs/ardour/ardour/track.h +++ b/libs/ardour/ardour/track.h @@ -51,11 +51,24 @@ class LIBARDOUR_API Track : public Route, public PublicDiskstream virtual bool can_use_mode (TrackMode /*m*/, bool& /*bounce_required*/) { return false; } PBD::Signal0 TrackModeChanged; - virtual void set_monitoring (MonitorChoice); + class LIBARDOUR_API MonitoringControllable : public RouteAutomationControl { + public: + MonitoringControllable (std::string name, boost::shared_ptr); + void set_value (double, PBD::Controllable::GroupControlDisposition group_override); + /* currently no automation, so no need for set_value_unchecked() */ + double get_value () const; + private: + void _set_value (double, PBD::Controllable::GroupControlDisposition group_override); + static ParameterDescriptor get_descriptor(); + }; + + void set_monitoring (MonitorChoice, PBD::Controllable::GroupControlDisposition group_override); MonitorChoice monitoring_choice() const { return _monitoring; } MonitorState monitoring_state () const; PBD::Signal0 MonitoringChanged; + boost::shared_ptr monitoring_control() const { return _monitoring_control; } + MeterState metering_state () const; virtual int no_roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame, @@ -179,6 +192,7 @@ class LIBARDOUR_API Track : public Route, public PublicDiskstream TrackMode _mode; bool _needs_butler; MonitorChoice _monitoring; + boost::shared_ptr _monitoring_control; //private: (FIXME) struct FreezeRecordProcessorInfo { -- cgit v1.2.3