From 8f13a0a13bb6854fa3deb677eb4f1b98bff5c36f Mon Sep 17 00:00:00 2001 From: Len Ovens Date: Wed, 25 Oct 2017 08:34:02 -0700 Subject: [PATCH] OSC: fix monitor input/disk buttons so both can be on --- libs/surfaces/osc/osc.cc | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc index 64ef0b6019..45e1e01cba 100644 --- a/libs/surfaces/osc/osc.cc +++ b/libs/surfaces/osc/osc.cc @@ -3052,7 +3052,9 @@ OSC::route_monitor_input (int ssid, int yn, lo_message msg) boost::shared_ptr track = boost::dynamic_pointer_cast (s); if (track) { if (track->monitoring_control()) { - track->monitoring_control()->set_value (yn ? 1.0 : 0.0, sur->usegroup); + std::bitset<32> value = track->monitoring_control()->get_value (); + value[0] = yn ? 1 : 0; + track->monitoring_control()->set_value (value.to_ulong(), sur->usegroup); return 0; } } @@ -3075,7 +3077,9 @@ OSC::sel_monitor_input (uint32_t yn, lo_message msg) boost::shared_ptr track = boost::dynamic_pointer_cast (s); if (track) { if (track->monitoring_control()) { - track->monitoring_control()->set_value (yn ? 1.0 : 0.0, PBD::Controllable::NoGroup); + std::bitset<32> value = track->monitoring_control()->get_value (); + value[0] = yn ? 1 : 0; + track->monitoring_control()->set_value (value.to_ulong(), sur->usegroup); return 0; } } @@ -3094,7 +3098,9 @@ OSC::route_monitor_disk (int ssid, int yn, lo_message msg) boost::shared_ptr track = boost::dynamic_pointer_cast (s); if (track) { if (track->monitoring_control()) { - track->monitoring_control()->set_value (yn ? 2.0 : 0.0, sur->usegroup); + std::bitset<32> value = track->monitoring_control()->get_value (); + value[1] = yn ? 1 : 0; + track->monitoring_control()->set_value (value.to_ulong(), sur->usegroup); return 0; } } @@ -3117,7 +3123,9 @@ OSC::sel_monitor_disk (uint32_t yn, lo_message msg) boost::shared_ptr track = boost::dynamic_pointer_cast (s); if (track) { if (track->monitoring_control()) { - track->monitoring_control()->set_value (yn ? 2.0 : 0.0, PBD::Controllable::NoGroup); + std::bitset<32> value = track->monitoring_control()->get_value (); + value[1] = yn ? 1 : 0; + track->monitoring_control()->set_value (value.to_ulong(), sur->usegroup); return 0; } }