From 3a75fab244a23ca73525debce2aeddf840b1fd86 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 6 Sep 2014 12:52:29 +0200 Subject: [PATCH] speed up session load (display updates) --- gtk2_ardour/ardour_ui.cc | 9 ++++++--- gtk2_ardour/ardour_ui_dependents.cc | 1 + gtk2_ardour/editor.cc | 1 + gtk2_ardour/editor_routes.cc | 4 +++- gtk2_ardour/editor_routes.h | 1 + 5 files changed, 12 insertions(+), 4 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 8bb27b7f14..916907a046 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -553,9 +553,12 @@ ARDOUR_UI::post_engine () Glib::signal_timeout().connect_seconds (sigc::mem_fun(*this, &ARDOUR_UI::update_wall_clock), 1); #endif - Config->ParameterChanged.connect (forever_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::parameter_changed, this, _1), gui_context()); - boost::function pc (boost::bind (&ARDOUR_UI::parameter_changed, this, _1)); - Config->map_parameters (pc); + { + DisplaySuspender ds; + Config->ParameterChanged.connect (forever_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::parameter_changed, this, _1), gui_context()); + boost::function pc (boost::bind (&ARDOUR_UI::parameter_changed, this, _1)); + Config->map_parameters (pc); + } } ARDOUR_UI::~ARDOUR_UI () diff --git a/gtk2_ardour/ardour_ui_dependents.cc b/gtk2_ardour/ardour_ui_dependents.cc index bb0f375942..c27ade9fed 100644 --- a/gtk2_ardour/ardour_ui_dependents.cc +++ b/gtk2_ardour/ardour_ui_dependents.cc @@ -72,6 +72,7 @@ ARDOUR_UI::we_have_dependents () void ARDOUR_UI::connect_dependents_to_session (ARDOUR::Session *s) { + DisplaySuspender ds; BootMessage (_("Setup Editor")); editor->set_session (s); BootMessage (_("Setup Mixer")); diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 4227a6e03c..87ee9085d5 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -893,6 +893,7 @@ void Editor::show_window () { if (!is_visible ()) { + DisplaySuspender ds; show_all (); /* XXX: this is a bit unfortunate; it would probably diff --git a/gtk2_ardour/editor_routes.cc b/gtk2_ardour/editor_routes.cc index 1ca8cf2a65..e00748c2fb 100644 --- a/gtk2_ardour/editor_routes.cc +++ b/gtk2_ardour/editor_routes.cc @@ -494,9 +494,10 @@ EditorRoutes::show_menu () void EditorRoutes::redisplay () { - if (_no_redisplay || !_session || _session->deletion_in_progress()) { + if (_no_redisplay || !_session || _session->deletion_in_progress() || _redisplaying) { return; } + _redisplaying = true; // tv->show_at() below causes recursive redisplay via handle_gui_changes() TreeModel::Children rows = _model->children(); TreeModel::Children::iterator i; @@ -545,6 +546,7 @@ EditorRoutes::redisplay () */ _editor->vertical_adjustment.set_value (_editor->_full_canvas_height - _editor->_visible_canvas_height); } + _redisplaying = false; } void diff --git a/gtk2_ardour/editor_routes.h b/gtk2_ardour/editor_routes.h index 21a92fc423..704a31a1b6 100644 --- a/gtk2_ardour/editor_routes.h +++ b/gtk2_ardour/editor_routes.h @@ -151,6 +151,7 @@ private: bool _ignore_reorder; bool _no_redisplay; + bool _redisplaying; bool _adding_routes; bool _route_deletion_in_progress; -- 2.30.2