Fix route ordering (mixer TV lacks master-bus)
authorRobin Gareus <robin@gareus.org>
Thu, 16 Feb 2017 23:44:02 +0000 (00:44 +0100)
committerRobin Gareus <robin@gareus.org>
Thu, 16 Feb 2017 23:44:02 +0000 (00:44 +0100)
Skip master bus' order-key when re-ordering routes in the mixer.

This also fixes a related issue:
When a new track is added, Session::RouteAdded will call be handled by
Editor::add_routes AND Mixer_UI::add_routes, leading to calls to both:

- EditorRoutes::sync_presentation_info_from_treeview()
- Mixer_UI::sync_presentation_info_from_treeview ()

which potentially set different order-keys.

gtk2_ardour/mixer_ui.cc

index c42c426aeecf3d7207fbdfcdcb6ab326848805a7..53cdca05a72eb9b87e093d35b9a42efab075a870 100644 (file)
@@ -765,13 +765,20 @@ Mixer_UI::sync_presentation_info_from_treeview ()
                SortByNewDisplayOrder cmp;
                sort (sorted.begin(), sorted.end(), cmp);
                for (OrderingKeys::iterator sr = sorted.begin(); sr != sorted.end(); ++sr, ++n) {
+                       if (_session->master_out() && (_session->master_out()->presentation_info().order() == n)) {
+                               ++n;
+                       }
                        if (sr->old_display_order != n) {
                                change = true;
+                               break;
                        }
                }
                if (change) {
                        n = 0;
                        for (OrderingKeys::iterator sr = sorted.begin(); sr != sorted.end(); ++sr, ++n) {
+                               if (_session->master_out() && (_session->master_out()->presentation_info().order() == n)) {
+                                       ++n;
+                               }
                                if (sr->stripable->presentation_info().order() != n) {
                                        sr->stripable->set_presentation_order (n);
                                }