From 8add4eefad58458acb7212b3cdba2807f593cfc8 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 20 Apr 2017 16:06:47 +0200 Subject: FP8: some code comments and cleanup --- libs/surfaces/faderport8/faderport8.cc | 123 +++++++++++++++++++-------------- 1 file changed, 73 insertions(+), 50 deletions(-) (limited to 'libs/surfaces/faderport8/faderport8.cc') diff --git a/libs/surfaces/faderport8/faderport8.cc b/libs/surfaces/faderport8/faderport8.cc index b0037b72c0..9f642e8171 100644 --- a/libs/surfaces/faderport8/faderport8.cc +++ b/libs/surfaces/faderport8/faderport8.cc @@ -128,9 +128,11 @@ FaderPort8::FaderPort8 (Session& s) ARDOUR::AudioEngine::instance()->Stopped.connect (port_connections, MISSING_INVALIDATOR, boost::bind (&FaderPort8::engine_reset, this), this); ARDOUR::Port::PortDrop.connect (port_connections, MISSING_INVALIDATOR, boost::bind (&FaderPort8::engine_reset, this), this); - StripableSelectionChanged.connect (selection_connection, MISSING_INVALIDATOR, boost::bind (&FaderPort8::gui_track_selection_changed, this), this); + StripableSelectionChanged.connect (selection_connection, MISSING_INVALIDATOR, boost::bind (&FaderPort8::notify_gui_track_selection_changed, this), this); + /* bind button events to call libardour actions */ setup_actions (); + _ctrls.FaderModeChanged.connect_same_thread (modechange_connections, boost::bind (&FaderPort8::notify_fader_mode_changed, this)); _ctrls.MixModeChanged.connect_same_thread (modechange_connections, boost::bind (&FaderPort8::assign_strips, this, true)); } @@ -995,6 +997,10 @@ FaderPort8::assign_stripables (bool select_only) } } +/* **************************************************************************** + * Plugin selection and parameters + */ + void FaderPort8::assign_processor_ctrls () { @@ -1274,6 +1280,10 @@ FaderPort8::spill_plugins () assert (id == 8); } +/* **************************************************************************** + * Aux Sends and Mixbus assigns + */ + void FaderPort8::assign_sends () { @@ -1334,13 +1344,9 @@ FaderPort8::assign_sends () assign_stripables (true); } -void -FaderPort8::set_periodic_display_mode (FP8Strip::DisplayMode m) -{ - for (uint8_t id = 0; id < 8; ++id) { - _ctrls.strip(id).set_periodic_display_mode (m); - } -} +/* **************************************************************************** + * Main stripable assignment (dispatch depending on mode) + */ void FaderPort8::assign_strips (bool reset_bank) @@ -1357,7 +1363,7 @@ FaderPort8::assign_strips (bool reset_bank) case ModeTrack: case ModePan: assign_stripables (); - gui_track_selection_changed (); // update selection, automation-state + notify_gui_track_selection_changed (); // update selection, automation-state break; case ModePlugins: if (_proc_params.size() > 0) { @@ -1372,6 +1378,17 @@ FaderPort8::assign_strips (bool reset_bank) } } +/* **************************************************************************** + * some helper functions + */ + +void +FaderPort8::set_periodic_display_mode (FP8Strip::DisplayMode m) +{ + for (uint8_t id = 0; id < 8; ++id) { + _ctrls.strip(id).set_periodic_display_mode (m); + } +} void FaderPort8::drop_ctrl_connections () @@ -1381,6 +1398,46 @@ FaderPort8::drop_ctrl_connections () _showing_well_known = 0; } +/* functor for FP8Strip's select button */ +void +FaderPort8::select_strip (boost::weak_ptr ws) +{ + boost::shared_ptr s = ws.lock(); + if (!s) { + return; + } +#if 1 /* single exclusive selection by default, toggle via shift */ + if (shift_mod ()) { + ToggleStripableSelection (s); + } else { + SetStripableSelection (s); + } +#else + /* tri-state selection: This allows to set the "first selected" + * with a single click without clearing the selection. + * Single de/select via shift. + */ + if (shift_mod ()) { + if (s->is_selected ()) { + RemoveStripableFromSelection (s); + } else { + SetStripableSelection (s); + } + return; + } + if (s->is_selected () && s != first_selected_stripable ()) { + set_first_selected_stripable (s); + notify_gui_track_selection_changed (); + } else { + ToggleStripableSelection (s); + } +#endif +} + +/* **************************************************************************** + * Assigned Stripable Callbacks + */ + void FaderPort8::notify_fader_mode_changed () { @@ -1411,10 +1468,6 @@ FaderPort8::notify_fader_mode_changed () notify_automation_mode_changed (); } -/* **************************************************************************** - * Assigned Stripable Callbacks - */ - void FaderPort8::notify_stripable_added_or_removed () { @@ -1428,42 +1481,6 @@ FaderPort8::notify_stripable_added_or_removed () assign_strips (false); } -/* functor for FP8Strip's select button */ -void -FaderPort8::select_strip (boost::weak_ptr ws) -{ - boost::shared_ptr s = ws.lock(); - if (!s) { - return; - } -#if 1 /* single exclusive selection by default, toggle via shift */ - if (shift_mod ()) { - ToggleStripableSelection (s); - } else { - SetStripableSelection (s); - } -#else - /* tri-state selection: This allows to set the "first selected" - * with a single click without clearing the selection. - * Single de/select via shift. - */ - if (shift_mod ()) { - if (s->is_selected ()) { - RemoveStripableFromSelection (s); - } else { - SetStripableSelection (s); - } - return; - } - if (s->is_selected () && s != first_selected_stripable ()) { - set_first_selected_stripable (s); - gui_track_selection_changed (); - } else { - ToggleStripableSelection (s); - } -#endif -} - /* called from static PresentationInfo::Change */ void FaderPort8::notify_pi_property_changed (const PropertyChange& what_changed) @@ -1521,8 +1538,14 @@ FaderPort8::notify_stripable_property_changed (boost::weak_ptr ws, co } void -FaderPort8::gui_track_selection_changed (/*ARDOUR::StripableNotificationListPtr*/) +FaderPort8::notify_gui_track_selection_changed (/*ARDOUR::StripableNotificationListPtr*/) { + if (!_device_active) { + /* this can be called anytime from the static + * ControlProtocol::StripableSelectionChanged + */ + return; + } automation_state_connections.drop_connections(); switch (_ctrls.fader_mode ()) { -- cgit v1.2.3