summaryrefslogtreecommitdiff
path: root/libs/surfaces/faderport8/faderport8.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-04-20 16:06:47 +0200
committerRobin Gareus <robin@gareus.org>2017-04-20 16:06:47 +0200
commit8add4eefad58458acb7212b3cdba2807f593cfc8 (patch)
tree42a9ee669b8bf564c20180c6e84d40765b7de2b2 /libs/surfaces/faderport8/faderport8.cc
parent24699d3be41b6527479419006fca1c2b3b424028 (diff)
FP8: some code comments and cleanup
Diffstat (limited to 'libs/surfaces/faderport8/faderport8.cc')
-rw-r--r--libs/surfaces/faderport8/faderport8.cc123
1 files changed, 73 insertions, 50 deletions
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<Stripable> ws)
+{
+ boost::shared_ptr<Stripable> 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<Stripable> ws)
-{
- boost::shared_ptr<Stripable> 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<Stripable> 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 ()) {