summaryrefslogtreecommitdiff
path: root/libs/surfaces
diff options
context:
space:
mode:
authorBen Loftis <ben@harrisonconsoles.com>2019-10-20 22:24:17 -0500
committerBen Loftis <ben@harrisonconsoles.com>2019-10-20 22:24:32 -0500
commitb96d8e7ffa51fcb25511cd02260ec256d181d3b6 (patch)
treea93afdaf9c7d890dfded9667db8da70e6512afd5 /libs/surfaces
parent92173ca1185904c2aea7ba081667cf59989958f7 (diff)
Add support for single-fader MCU devices: XTouch One and RuCo. (needs testing)
Diffstat (limited to 'libs/surfaces')
-rw-r--r--libs/surfaces/mackie/device_info.cc9
-rw-r--r--libs/surfaces/mackie/device_info.h2
-rw-r--r--libs/surfaces/mackie/mackie_control_protocol.cc5
3 files changed, 16 insertions, 0 deletions
diff --git a/libs/surfaces/mackie/device_info.cc b/libs/surfaces/mackie/device_info.cc
index a9b7d9d0d5..c085aea812 100644
--- a/libs/surfaces/mackie/device_info.cc
+++ b/libs/surfaces/mackie/device_info.cc
@@ -62,6 +62,7 @@ DeviceInfo::DeviceInfo()
, _is_qcon(false)
, _has_meters (true)
, _has_separate_meters (false)
+ , _single_fader_follows_selection (false)
, _device_type (MCU)
, _name (X_("Mackie Control Universal Pro"))
{
@@ -254,6 +255,8 @@ DeviceInfo::set_state (const XMLNode& node, int /* version */)
if (!child->get_property ("value", _strip_cnt)) {
_strip_cnt = 8;
}
+ if (_strip_cnt==1)
+ _single_fader_follows_selection = true;
} else {
return -1;
}
@@ -425,6 +428,12 @@ DeviceInfo::has_meters() const
}
bool
+DeviceInfo::single_fader_follows_selection() const
+{
+ return _single_fader_follows_selection;
+}
+
+bool
DeviceInfo::has_separate_meters() const
{
return _has_separate_meters;
diff --git a/libs/surfaces/mackie/device_info.h b/libs/surfaces/mackie/device_info.h
index dc8803e91c..db0837f26c 100644
--- a/libs/surfaces/mackie/device_info.h
+++ b/libs/surfaces/mackie/device_info.h
@@ -83,6 +83,7 @@ class DeviceInfo
bool is_qcon() const;
bool has_meters() const;
bool has_separate_meters() const;
+ bool single_fader_follows_selection() const;
const std::string& name() const;
static std::map<std::string,DeviceInfo> device_info;
@@ -113,6 +114,7 @@ class DeviceInfo
bool _is_qcon;
bool _has_meters;
bool _has_separate_meters;
+ bool _single_fader_follows_selection;
DeviceType _device_type;
std::string _name;
std::string _global_button_name;
diff --git a/libs/surfaces/mackie/mackie_control_protocol.cc b/libs/surfaces/mackie/mackie_control_protocol.cc
index 9887ed9402..7878a795bc 100644
--- a/libs/surfaces/mackie/mackie_control_protocol.cc
+++ b/libs/surfaces/mackie/mackie_control_protocol.cc
@@ -2437,6 +2437,11 @@ MackieControlProtocol::first_selected_stripable () const
return s;
}
+ /* if it's a single-fader surface, it should follow the selection */
+ if (_device_info.single_fader_follows_selection()) {
+ return s;
+ }
+
/* stripable is not mapped. thus, the currently selected stripable is
* not on the surfaces, and so from our perspective, there is
* no currently selected stripable.