summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/editor_routes.cc12
-rw-r--r--gtk2_ardour/editor_routes.h1
2 files changed, 12 insertions, 1 deletions
diff --git a/gtk2_ardour/editor_routes.cc b/gtk2_ardour/editor_routes.cc
index 7ad4e8a7cd..a33a27c689 100644
--- a/gtk2_ardour/editor_routes.cc
+++ b/gtk2_ardour/editor_routes.cc
@@ -70,6 +70,8 @@ EditorRoutes::EditorRoutes (Editor* e)
: EditorComponent (e)
, _ignore_reorder (false)
, _no_redisplay (false)
+ , _redisplaying (false)
+ , _redisplay_2 (false)
, _adding_routes (false)
, _route_deletion_in_progress (false)
, _menu (0)
@@ -495,9 +497,14 @@ EditorRoutes::show_menu ()
void
EditorRoutes::redisplay ()
{
- if (_no_redisplay || !_session || _session->deletion_in_progress() || _redisplaying) {
+ if (_redisplaying) {
+ _redisplay_2 = true;
return;
}
+ if (_no_redisplay || !_session || _session->deletion_in_progress()) {
+ return;
+ }
+ _redisplay_2 = false;
_redisplaying = true; // tv->show_at() below causes recursive redisplay via handle_gui_changes()
TreeModel::Children rows = _model->children();
@@ -548,6 +555,9 @@ EditorRoutes::redisplay ()
_editor->vertical_adjustment.set_value (_editor->_full_canvas_height - _editor->_visible_canvas_height);
}
_redisplaying = false;
+ if (_redisplay_2) {
+ redisplay();
+ }
}
void
diff --git a/gtk2_ardour/editor_routes.h b/gtk2_ardour/editor_routes.h
index 0e30974887..0d299f0d0f 100644
--- a/gtk2_ardour/editor_routes.h
+++ b/gtk2_ardour/editor_routes.h
@@ -153,6 +153,7 @@ private:
bool _ignore_reorder;
bool _no_redisplay;
bool _redisplaying;
+ bool _redisplay_2;
bool _adding_routes;
bool _route_deletion_in_progress;
int _queue_mute_rec_solo_etc;