From fad1531b2d78c061835f7d34fd1ac1699bdc0f3b Mon Sep 17 00:00:00 2001 From: David Robillard Date: Wed, 16 Jun 2021 01:37:23 -0400 Subject: [PATCH] Add BasicUI::set_control() and set_controls() Towards removing the direct use of Session by surfaces. --- libs/surfaces/control_protocol/basic_ui.cc | 18 ++++++++++++++++++ .../control_protocol/basic_ui.h | 11 +++++++++++ libs/surfaces/faderport/operations.cc | 3 +-- libs/surfaces/faderport8/actions.cc | 4 ++-- libs/surfaces/launch_control_xl/controllers.cc | 5 +++-- libs/surfaces/push2/mix.cc | 4 ++-- libs/surfaces/push2/track_mix.cc | 2 +- libs/surfaces/us2400/mcp_buttons.cc | 6 +++--- 8 files changed, 41 insertions(+), 12 deletions(-) diff --git a/libs/surfaces/control_protocol/basic_ui.cc b/libs/surfaces/control_protocol/basic_ui.cc index fa650369fa..78c45fa14f 100644 --- a/libs/surfaces/control_protocol/basic_ui.cc +++ b/libs/surfaces/control_protocol/basic_ui.cc @@ -847,6 +847,24 @@ BasicUI::config () return _session->config; } +void +BasicUI::set_controls ( + boost::shared_ptr control_list, + const double val, + const PBD::Controllable::GroupControlDisposition disposition) +{ + return _session->set_controls (control_list, val, disposition); +} + +void +BasicUI::set_control ( + boost::shared_ptr control, + const double val, + const PBD::Controllable::GroupControlDisposition disposition) +{ + return _session->set_control (control, val, disposition); +} + boost::shared_ptr BasicUI::monitor_out () const { diff --git a/libs/surfaces/control_protocol/control_protocol/basic_ui.h b/libs/surfaces/control_protocol/control_protocol/basic_ui.h index dbeedd8fa7..e815b3790a 100644 --- a/libs/surfaces/control_protocol/control_protocol/basic_ui.h +++ b/libs/surfaces/control_protocol/control_protocol/basic_ui.h @@ -27,6 +27,7 @@ #include "ardour/types.h" #include "control_protocol/visibility.h" #include "temporal/timeline.h" +#include "pbd/controllable.h" #include "pbd/signals.h" #include "temporal/time.h" @@ -190,6 +191,16 @@ public: const SessionConfiguration& config () const; SessionConfiguration& config (); + /* Control-based methods */ + + void set_controls (boost::shared_ptr, + double val, + PBD::Controllable::GroupControlDisposition); + + void set_control (boost::shared_ptr, + double val, + PBD::Controllable::GroupControlDisposition); + /* Monitor/Master Out */ boost::shared_ptr monitor_out () const; diff --git a/libs/surfaces/faderport/operations.cc b/libs/surfaces/faderport/operations.cc index ea80fd38c7..fb2fc4965b 100644 --- a/libs/surfaces/faderport/operations.cc +++ b/libs/surfaces/faderport/operations.cc @@ -23,7 +23,6 @@ #include "ardour/plugin_insert.h" #include "ardour/rc_configuration.h" #include "ardour/record_enable_control.h" -#include "ardour/session.h" #include "ardour/track.h" #include "ardour/types.h" @@ -140,7 +139,7 @@ FaderPort::solo () return; } - _session->set_control (_current_stripable->solo_control(), !_current_stripable->solo_control()->self_soloed(), PBD::Controllable::UseGroup); + set_control (_current_stripable->solo_control(), !_current_stripable->solo_control()->self_soloed(), PBD::Controllable::UseGroup); } void diff --git a/libs/surfaces/faderport8/actions.cc b/libs/surfaces/faderport8/actions.cc index 8426ee9e61..6083924a5e 100644 --- a/libs/surfaces/faderport8/actions.cc +++ b/libs/surfaces/faderport8/actions.cc @@ -349,7 +349,7 @@ FaderPort8::button_solo_clear () cl->push_back (ac); } if (!cl->empty()) { - _session->set_controls (cl, 1.0, PBD::Controllable::NoGroup); + set_controls (cl, 1.0, PBD::Controllable::NoGroup); } } } @@ -373,7 +373,7 @@ FaderPort8::button_mute_clear () ac->start_touch (timepos_t (transport_sample())); } if (!cl->empty()) { - _session->set_controls (cl, 1.0, PBD::Controllable::NoGroup); + set_controls (cl, 1.0, PBD::Controllable::NoGroup); } } #else diff --git a/libs/surfaces/launch_control_xl/controllers.cc b/libs/surfaces/launch_control_xl/controllers.cc index 38a9f9be99..892a48dbd6 100644 --- a/libs/surfaces/launch_control_xl/controllers.cc +++ b/libs/surfaces/launch_control_xl/controllers.cc @@ -22,10 +22,11 @@ #include #include "ardour/debug.h" +#include "ardour/gain_control.h" #include "ardour/mute_control.h" -#include "ardour/session.h" #include "ardour/solo_control.h" #include "ardour/solo_isolate_control.h" +#include "ardour/stripable.h" #include "launch_control_xl.h" @@ -932,7 +933,7 @@ LaunchControlXL::button_press_track_control(uint8_t n) { boost::shared_ptr ac = get_ac_by_state(n); if (ac) { - _session->set_control (ac, !ac->get_value(), PBD::Controllable::UseGroup); + set_control (ac, !ac->get_value(), PBD::Controllable::UseGroup); } } diff --git a/libs/surfaces/push2/mix.cc b/libs/surfaces/push2/mix.cc index 79c0085ebe..59d32cdc04 100644 --- a/libs/surfaces/push2/mix.cc +++ b/libs/surfaces/push2/mix.cc @@ -161,7 +161,7 @@ MixLayout::MixLayout (Push2& p, Session & s, std::string const & name) mode_button = p2.button_by_id (Push2::Upper1); - session.RouteAdded.connect (session_connections, invalidator(*this), boost::bind (&MixLayout::stripables_added, this), &p2); + p2.RouteAdded().connect (session_connections, invalidator(*this), boost::bind (&MixLayout::stripables_added, this), &p2); session.vca_manager().VCAAdded.connect (session_connections, invalidator (*this), boost::bind (&MixLayout::stripables_added, this), &p2); } @@ -405,7 +405,7 @@ MixLayout::button_solo () if (s) { boost::shared_ptr ac = s->solo_control(); if (ac) { - session.set_control (ac, !ac->get_value(), PBD::Controllable::UseGroup); + p2.set_control (ac, !ac->get_value(), PBD::Controllable::UseGroup); } } } diff --git a/libs/surfaces/push2/track_mix.cc b/libs/surfaces/push2/track_mix.cc index f4c16f1b06..f307d758e9 100644 --- a/libs/surfaces/push2/track_mix.cc +++ b/libs/surfaces/push2/track_mix.cc @@ -225,7 +225,7 @@ TrackMixLayout::button_lower (uint32_t n) break; case 1: if (stripable->solo_control()) { - session.set_control (stripable->solo_control(), !stripable->solo_control()->self_soloed(), PBD::Controllable::UseGroup); + p2.set_control (stripable->solo_control(), !stripable->solo_control()->self_soloed(), PBD::Controllable::UseGroup); } break; case 2: diff --git a/libs/surfaces/us2400/mcp_buttons.cc b/libs/surfaces/us2400/mcp_buttons.cc index d8b0dc51b5..a2e9505f39 100644 --- a/libs/surfaces/us2400/mcp_buttons.cc +++ b/libs/surfaces/us2400/mcp_buttons.cc @@ -21,11 +21,11 @@ #include "pbd/memento_command.h" #include "ardour/debug.h" -#include "ardour/profile.h" -#include "ardour/session.h" -#include "ardour/route.h" #include "ardour/location.h" +#include "ardour/profile.h" #include "ardour/rc_configuration.h" +#include "ardour/route.h" +#include "ardour/session.h" #include "us2400_control_protocol.h" #include "surface.h"