Fix hang on session close that I introduced with the route group changes.

git-svn-id: svn://localhost/ardour2/branches/3.0@9388 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Carl Hetherington 2011-04-20 01:24:40 +00:00
parent e157694c67
commit 6abc468aeb
2 changed files with 12 additions and 6 deletions

View File

@ -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;
}

View File

@ -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;
};