summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/ardour_ui.cc11
-rw-r--r--gtk2_ardour/ardour_ui.h1
2 files changed, 12 insertions, 0 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index a55dfc48cd..55572ad392 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -308,6 +308,8 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir)
/* also plugin scan messages */
ARDOUR::PluginScanMessage.connect (forever_connections, MISSING_INVALIDATOR, boost::bind(&ARDOUR_UI::plugin_scan_dialog, this, _1, _2), gui_context());
+ ARDOUR::GUIIdle.connect (forever_connections, MISSING_INVALIDATOR, boost::bind(&ARDOUR_UI::gui_idle_handler, this), gui_context());
+
/* lets get this party started */
setup_gtk_ardour_enums ();
@@ -3834,6 +3836,15 @@ ARDOUR_UI::plugin_scan_dialog (std::string type, std::string plugin)
}
void
+ARDOUR_UI::gui_idle_handler ()
+{
+ int timeout = 30;
+ while (gtk_events_pending() && --timeout) {
+ gtk_main_iteration ();
+ }
+}
+
+void
ARDOUR_UI::disk_underrun_handler ()
{
ENSURE_GUI_THREAD (*this, &ARDOUR_UI::disk_underrun_handler)
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index 99e864e763..395833fbad 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -666,6 +666,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
void disk_speed_dialog_gone (int ignored_response, Gtk::MessageDialog*);
void disk_overrun_handler ();
void disk_underrun_handler ();
+ void gui_idle_handler ();
void cancel_plugin_scan ();
void plugin_scan_dialog (std::string type, std::string plugin);