summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/mixer_ui.cc13
-rw-r--r--gtk2_ardour/mixer_ui.h5
2 files changed, 12 insertions, 6 deletions
diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc
index e2c9932a40..295e956060 100644
--- a/gtk2_ardour/mixer_ui.cc
+++ b/gtk2_ardour/mixer_ui.cc
@@ -225,7 +225,7 @@ Mixer_UI::Mixer_UI ()
auto_rebinding = FALSE;
- _in_group_rebuild = false;
+ _in_group_rebuild_or_clear = false;
MixerStrip::CatchDeletion.connect (*this, invalidator (*this), ui_bind (&Mixer_UI::remove_strip, this, _1), gui_context());
@@ -507,9 +507,12 @@ Mixer_UI::set_session (Session* sess)
void
Mixer_UI::session_going_away ()
{
- ENSURE_GUI_THREAD (*this, &Mixer_UI::session_going_away)
+ ENSURE_GUI_THREAD (*this, &Mixer_UI::session_going_away);
+ _in_group_rebuild_or_clear = true;
group_model->clear ();
+ _in_group_rebuild_or_clear = false;
+
_selection.clear ();
track_model->clear ();
@@ -1106,7 +1109,7 @@ Mixer_UI::route_groups_changed ()
{
ENSURE_GUI_THREAD (*this, &Mixer_UI::route_groups_changed);
- _in_group_rebuild = true;
+ _in_group_rebuild_or_clear = true;
/* just rebuild the while thing */
@@ -1123,7 +1126,7 @@ Mixer_UI::route_groups_changed ()
_session->foreach_route_group (sigc::mem_fun (*this, &Mixer_UI::add_route_group));
_group_tabs->set_dirty ();
- _in_group_rebuild = false;
+ _in_group_rebuild_or_clear = false;
}
void
@@ -1258,7 +1261,7 @@ Mixer_UI::route_group_row_change (const Gtk::TreeModel::Path&, const Gtk::TreeMo
void
Mixer_UI::route_group_row_deleted (Gtk::TreeModel::Path const &)
{
- if (_in_group_rebuild) {
+ if (_in_group_rebuild_or_clear) {
return;
}
diff --git a/gtk2_ardour/mixer_ui.h b/gtk2_ardour/mixer_ui.h
index a94226fc16..915b084dfa 100644
--- a/gtk2_ardour/mixer_ui.h
+++ b/gtk2_ardour/mixer_ui.h
@@ -259,7 +259,10 @@ class Mixer_UI : public Gtk::Window, public PBD::ScopedConnectionList, public AR
static const int32_t default_width = 478;
static const int32_t default_height = 765;
- bool _in_group_rebuild;
+ /** true if we are rebuilding the route group list, or clearing
+ it during a session teardown.
+ */
+ bool _in_group_rebuild_or_clear;
friend class MixerGroupTabs;
};