safe EditorRoutes::redisplay()

This commit is contained in:
Robin Gareus 2014-09-06 22:00:42 +02:00
parent 6745aa6e52
commit 78f0007d54
2 changed files with 12 additions and 1 deletions

View File

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

View File

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