diff options
author | Robin Gareus <robin@gareus.org> | 2014-09-06 22:00:42 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2014-09-06 22:01:39 +0200 |
commit | 78f0007d540f862aa3e94c7ab2ebf61033552162 (patch) | |
tree | ba1fd1cb8184c475b07af93d001596fc9502824b /gtk2_ardour/editor_routes.cc | |
parent | 6745aa6e526f27e4a5d0a2c04f9e5e60276dc6d8 (diff) |
safe EditorRoutes::redisplay()
Diffstat (limited to 'gtk2_ardour/editor_routes.cc')
-rw-r--r-- | gtk2_ardour/editor_routes.cc | 12 |
1 files changed, 11 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 |