From 91cee14ca670b3c93a2eb6cab79c1fbf3d4b71c9 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Fri, 17 Feb 2017 00:44:02 +0100 Subject: [PATCH] Fix route ordering (mixer TV lacks master-bus) 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 | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index c42c426aee..53cdca05a7 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -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); }