diff --git a/rtgui/progressconnector.h b/rtgui/progressconnector.h index 4cf9b1e4e..3ce20f8f8 100644 --- a/rtgui/progressconnector.h +++ b/rtgui/progressconnector.h @@ -65,36 +65,32 @@ public: template class ProgressConnector { -private: + sigc::signal0 opStart; sigc::signal0 opEnd; T retval; Glib::Thread *workThread; - IdleRegister idle_register; + + static int emitEndSignalUI (void* data) + { + + sigc::signal0* opEnd = (sigc::signal0*) data; + int r = opEnd->emit (); + delete opEnd; + + return r; + } void workingThread () { - retval = opStart.emit(); - - const auto func = [](gpointer data) -> gboolean { - sigc::signal0* const opEnd = static_cast*>(data); - const gboolean res = opEnd->emit(); - delete opEnd; - - return res; - }; - - idle_register.add(func, new sigc::signal0(opEnd)); - + retval = opStart.emit (); + gdk_threads_add_idle(ProgressConnector::emitEndSignalUI, new sigc::signal0(opEnd)); workThread = nullptr; } public: + ProgressConnector (): retval( 0 ), workThread( nullptr ) { } - ~ProgressConnector() - { - idle_register.destroy(); - } void startFunc (const sigc::slot0& startHandler, const sigc::slot0& endHandler ) {