Revert ProgressConnector

Doesn't work with `IdleRegister`.
This commit is contained in:
Flössie
2017-03-30 21:17:34 +02:00
parent 91b44dbd08
commit 91f8e46029

View File

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