From f03f2e5c3f27679adcf6c3fa3425835643ba5b28 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 27 May 2016 16:11:55 -0400 Subject: [PATCH] use new record safe control in surface support --- libs/surfaces/control_protocol/control_protocol.cc | 1 + libs/surfaces/faderport/faderport.cc | 1 + libs/surfaces/faderport/operations.cc | 1 + libs/surfaces/mackie/mackie_control_protocol.cc | 1 + libs/surfaces/mackie/strip.cc | 1 + libs/surfaces/osc/osc.cc | 10 +++++----- libs/surfaces/osc/osc_route_observer.cc | 12 ++++++------ 7 files changed, 16 insertions(+), 11 deletions(-) diff --git a/libs/surfaces/control_protocol/control_protocol.cc b/libs/surfaces/control_protocol/control_protocol.cc index 977def928e..15946240d7 100644 --- a/libs/surfaces/control_protocol/control_protocol.cc +++ b/libs/surfaces/control_protocol/control_protocol.cc @@ -22,6 +22,7 @@ #include "ardour/gain_control.h" #include "ardour/session.h" +#include "ardour/record_enable_control.h" #include "ardour/route.h" #include "ardour/audio_track.h" #include "ardour/meter.h" diff --git a/libs/surfaces/faderport/faderport.cc b/libs/surfaces/faderport/faderport.cc index bfeb20b76b..7d8bb46bf1 100644 --- a/libs/surfaces/faderport/faderport.cc +++ b/libs/surfaces/faderport/faderport.cc @@ -47,6 +47,7 @@ #include "ardour/monitor_processor.h" #include "ardour/profile.h" #include "ardour/rc_configuration.h" +#include "ardour/record_enable_control.h" #include "ardour/stripable.h" #include "ardour/session.h" #include "ardour/session_configuration.h" diff --git a/libs/surfaces/faderport/operations.cc b/libs/surfaces/faderport/operations.cc index cb0351e615..6e59964905 100644 --- a/libs/surfaces/faderport/operations.cc +++ b/libs/surfaces/faderport/operations.cc @@ -22,6 +22,7 @@ #include "ardour/pannable.h" #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" diff --git a/libs/surfaces/mackie/mackie_control_protocol.cc b/libs/surfaces/mackie/mackie_control_protocol.cc index f7c76e89db..a9ae8007ed 100644 --- a/libs/surfaces/mackie/mackie_control_protocol.cc +++ b/libs/surfaces/mackie/mackie_control_protocol.cc @@ -52,6 +52,7 @@ #include "ardour/panner.h" #include "ardour/panner_shell.h" #include "ardour/profile.h" +#include "ardour/record_enable_control.h" #include "ardour/route.h" #include "ardour/route_group.h" #include "ardour/session.h" diff --git a/libs/surfaces/mackie/strip.cc b/libs/surfaces/mackie/strip.cc index d60f4955b9..ec451bdab3 100644 --- a/libs/surfaces/mackie/strip.cc +++ b/libs/surfaces/mackie/strip.cc @@ -44,6 +44,7 @@ #include "ardour/panner_shell.h" #include "ardour/phase_control.h" #include "ardour/rc_configuration.h" +#include "ardour/record_enable_control.h" #include "ardour/route.h" #include "ardour/session.h" #include "ardour/send.h" diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc index 1d87cdebc5..6f732cabec 100644 --- a/libs/surfaces/osc/osc.cc +++ b/libs/surfaces/osc/osc.cc @@ -43,6 +43,7 @@ #include "ardour/panner.h" #include "ardour/plugin.h" #include "ardour/plugin_insert.h" +#include "ardour/record_enable_control.h" #include "ardour/send.h" #include "osc.h" @@ -470,7 +471,7 @@ OSC::register_callbacks() REGISTER_CALLBACK (serv, "/ardour/pushbutton/scroll_up_1_page", "f", scroll_up_1_page); REGISTER_CALLBACK (serv, "/ardour/pushbutton/scroll_dn_1_page", "f", scroll_dn_1_page); - /* These commands require the route index in addition to the arg; TouchOSC (et al) can't use these */ + /* These commands require the route index in addition to the arg; TouchOSC (et al) can't use these */ REGISTER_CALLBACK (serv, "/ardour/routes/mute", "ii", route_mute); REGISTER_CALLBACK (serv, "/ardour/routes/solo", "ii", route_solo); REGISTER_CALLBACK (serv, "/ardour/routes/recenable", "ii", route_recenable); @@ -971,11 +972,10 @@ OSC::routes_list (lo_message msg) /* XXX Can only use group ID at this point */ lo_message_add_int32 (reply, r->presentation_info().group_order()); - if (boost::dynamic_pointer_cast(r) - || boost::dynamic_pointer_cast(r)) { + boost::shared_ptr rc = r->rec_enable_control(); - boost::shared_ptr t = boost::dynamic_pointer_cast(r); - lo_message_add_int32 (reply, (int32_t) t->rec_enable_control()->get_value()); + if (rc) { + lo_message_add_int32 (reply, (int32_t) rc->get_value()); } //Automatically listen to routes listed diff --git a/libs/surfaces/osc/osc_route_observer.cc b/libs/surfaces/osc/osc_route_observer.cc index a9e797621c..2dde3c2b54 100644 --- a/libs/surfaces/osc/osc_route_observer.cc +++ b/libs/surfaces/osc/osc_route_observer.cc @@ -20,6 +20,7 @@ #include "boost/lambda/lambda.hpp" #include "ardour/route.h" +#include "ardour/record_enable_control.h" #include "ardour/audio_track.h" #include "ardour/midi_track.h" @@ -40,12 +41,11 @@ OSCRouteObserver::OSCRouteObserver (boost::shared_ptr r, lo_address a) _route->PropertyChanged.connect (name_changed_connection, MISSING_INVALIDATOR, boost::bind (&OSCRouteObserver::name_changed, this, boost::lambda::_1), OSC::instance()); - if (boost::dynamic_pointer_cast(_route) || boost::dynamic_pointer_cast(_route)) { - - boost::shared_ptr track = boost::dynamic_pointer_cast(r); - boost::shared_ptr rec_controllable = boost::dynamic_pointer_cast(track->rec_enable_control()); - - rec_controllable->Changed.connect (rec_changed_connection, MISSING_INVALIDATOR, bind (&OSCRouteObserver::send_change_message, this, X_("/route/rec"), track->rec_enable_control()), OSC::instance()); + boost::shared_ptr rc = _route->rec_enable_control(); + if (rc) { + // XXX BIND ALERT: boost::shared_ptr to record enable control + // bound to functor. + rc->Changed.connect (rec_changed_connection, MISSING_INVALIDATOR, bind (&OSCRouteObserver::send_change_message, this, X_("/route/rec"), rc), OSC::instance()); } boost::shared_ptr mute_controllable = boost::dynamic_pointer_cast(_route->mute_control());