push2: tweak logic of master button
authorPaul Davis <paul@linuxaudiosystems.com>
Tue, 27 Sep 2016 19:30:43 +0000 (14:30 -0500)
committerPaul Davis <paul@linuxaudiosystems.com>
Tue, 27 Sep 2016 19:59:32 +0000 (14:59 -0500)
libs/surfaces/push2/buttons.cc

index 572bb875ad6ecf399652ac78673bbf979d5f1f00..43e4255f0197055e0e45ca988eda2d85193eb7de 100644 (file)
@@ -727,18 +727,23 @@ Push2::button_mix_press ()
 void
 Push2::button_master ()
 {
-       boost::shared_ptr<Stripable> master = session->master_out();
+       boost::shared_ptr<Stripable> main_out = session->master_out ();
 
-       if (!master) {
+       if (!main_out) {
                return;
        }
 
-       ControlProtocol::SetStripableSelection (master);
-
        if (_current_layout != track_mix_layout) {
+               ControlProtocol::SetStripableSelection (main_out);
                set_current_layout (track_mix_layout);
        } else {
-               set_current_layout (_previous_layout);
+               TrackMixLayout* tml = dynamic_cast<TrackMixLayout*> (_current_layout);
+               if (tml->current_stripable() == main_out) {
+                       /* back to previous layout */
+                       set_current_layout (_previous_layout);
+               } else {
+                       ControlProtocol::SetStripableSelection (main_out);
+               }
        }
 }