From 78f0007d540f862aa3e94c7ab2ebf61033552162 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 6 Sep 2014 22:00:42 +0200 Subject: [PATCH] safe EditorRoutes::redisplay() --- gtk2_ardour/editor_routes.cc | 12 +++++++++++- gtk2_ardour/editor_routes.h | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) 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; -- 2.30.2