summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_routes.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour/editor_routes.cc')
-rw-r--r--gtk2_ardour/editor_routes.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/gtk2_ardour/editor_routes.cc b/gtk2_ardour/editor_routes.cc
index 8d35a4a6a8..39847c9ffc 100644
--- a/gtk2_ardour/editor_routes.cc
+++ b/gtk2_ardour/editor_routes.cc
@@ -570,6 +570,9 @@ EditorRoutes::redisplay ()
// model deprecated g_atomic_int_exchange_and_add(, 1)
g_atomic_int_inc(const_cast<gint*>(&_redisplay_active));
if (!g_atomic_int_compare_and_exchange (const_cast<gint*>(&_redisplay_active), 1, 1)) {
+ /* recursive re-display can happen if redisplay shows/hides a TrackView
+ * which has children and their display status changes as result.
+ */
return;
}
@@ -584,6 +587,9 @@ EditorRoutes::redisplay ()
void
EditorRoutes::row_deleted (Gtk::TreeModel::Path const &)
{
+ if (!_session || _session->deletion_in_progress()) {
+ return;
+ }
/* this happens as the second step of a DnD within the treeview, and
* when a route is actually removed. we don't differentiate between
* the two cases.