diff options
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 11 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui.h | 1 |
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); |