drastic, deep and wide changes to make RouteGroup use boost::shared_ptr<Route> and...
[ardour.git] / gtk2_ardour / mixer_ui.cc
index 0d3f42c1d5e2fb24f462bb55087bb09371fd7023..097c229cf09471fb5bfa67b3c6c8a258053832d9 100644 (file)
@@ -24,6 +24,7 @@
 #include <gtkmm/accelmap.h>
 
 #include "pbd/convert.h"
+#include "pbd/stacktrace.h"
 #include <glibmm/thread.h>
 
 #include <gtkmm2ext/gtk_ui.h>
@@ -63,7 +64,6 @@ using PBD::atoi;
 
 Mixer_UI::Mixer_UI ()
        : Window (Gtk::WINDOW_TOPLEVEL)
-       , _plugin_selector (0)
 {
        session = 0;
        _strip_width = Config->get_default_narrow_ms() ? Narrow : Wide;
@@ -252,6 +252,8 @@ Mixer_UI::Mixer_UI ()
        group_display.show();
 
        auto_rebinding = FALSE;
+
+       _plugin_selector = new PluginSelector (PluginManager::the_manager ());
 }
 
 Mixer_UI::~Mixer_UI ()
@@ -378,7 +380,7 @@ Mixer_UI::sync_order_keys (string const & src)
        TreeModel::Children rows = track_model->children();
        TreeModel::Children::iterator ri;
 
-       if (src == N_("signal") || !session || (session->state_of_the_state() & Session::Loading) || rows.empty()) {
+       if (src == N_("signal") || !session || (session->state_of_the_state() & (Session::Loading|Session::Deletion)) || rows.empty()) {
                return;
        }
 
@@ -398,6 +400,10 @@ Mixer_UI::sync_order_keys (string const & src)
                        changed = true;
                }
        }
+
+       if (keys.size() != rows.size()) {
+               PBD::stacktrace (cerr, 20);
+       }
        assert(keys.size() == rows.size());
 
        // Remove any gaps in keys caused by automation children tracks
@@ -1146,7 +1152,7 @@ Mixer_UI::group_flags_changed (void* src, RouteGroup* group)
 
        for (list<MixerStrip *>::iterator i = strips.begin(); i != strips.end(); ++i) {
                if ((*i)->route_group() == group) {
-                       (*i)->route_group_changed(0);
+                       (*i)->route_group_changed();
                }
        }
 
@@ -1554,9 +1560,5 @@ Mixer_UI::set_route_group_activation (RouteGroup* g, bool a)
 PluginSelector*
 Mixer_UI::plugin_selector()
 {
-       if (!_plugin_selector) {
-               _plugin_selector = new PluginSelector (PluginManager::the_manager());
-               _plugin_selector->set_session (session);
-       }
        return _plugin_selector;
 }