OSC: Solo toggle should maintain state when locked, rec and rec_safe should show...
authorLen Ovens <len@ovenwerks.net>
Mon, 28 Nov 2016 04:52:14 +0000 (20:52 -0800)
committerLen Ovens <len@ovenwerks.net>
Mon, 28 Nov 2016 04:52:14 +0000 (20:52 -0800)
libs/surfaces/osc/osc.cc

index a9168c29e0efd4055491d1d1f109070ea363d2b9..f698dba9c8a65c293552fddc403c369b73e6e9ff 100644 (file)
@@ -1950,7 +1950,7 @@ OSC::route_solo (int ssid, int yn, lo_message msg)
        if (s) {
                if (s->solo_control()) {
                        s->solo_control()->set_value (yn ? 1.0 : 0.0, PBD::Controllable::NoGroup);
-                       return 0;
+                       return route_send_fail ("solo", ssid, (float) s->solo_control()->get_value(), get_address (msg));
                }
        }
 
@@ -2002,7 +2002,7 @@ OSC::sel_solo (uint32_t yn, lo_message msg)
        if (s) {
                if (s->solo_control()) {
                        s->solo_control()->set_value (yn ? 1.0 : 0.0, PBD::Controllable::NoGroup);
-                       return 0;
+                       return sel_fail ("solo", (float) s->solo_control()->get_value(), get_address (msg));
                }
        }
        return sel_fail ("solo", 0, get_address (msg));
@@ -2059,7 +2059,9 @@ OSC::sel_recenable (uint32_t yn, lo_message msg)
        if (s) {
                if (s->rec_enable_control()) {
                        s->rec_enable_control()->set_value (yn ? 1.0 : 0.0, PBD::Controllable::NoGroup);
-                       return 0;
+                       if (s->rec_enable_control()->get_value()) {
+                               return 0;
+                       }
                }
        }
        return sel_fail ("recenable", 0, get_address (msg));
@@ -2110,7 +2112,9 @@ OSC::sel_recsafe (uint32_t yn, lo_message msg)
        if (s) {
                if (s->rec_safe_control()) {
                        s->rec_safe_control()->set_value (yn ? 1.0 : 0.0, PBD::Controllable::NoGroup);
-                       return 0;
+                       if (s->rec_safe_control()->get_value()) {
+                               return 0;
+                       }
                }
        }
        return sel_fail ("record_safe", 0, get_address (msg));