Revert ProgressConnector
Doesn't work with `IdleRegister`.
This commit is contained in:
@@ -65,36 +65,32 @@ public:
|
|||||||
template<class T>
|
template<class T>
|
||||||
class ProgressConnector
|
class ProgressConnector
|
||||||
{
|
{
|
||||||
private:
|
|
||||||
sigc::signal0<T> opStart;
|
sigc::signal0<T> opStart;
|
||||||
sigc::signal0<bool> opEnd;
|
sigc::signal0<bool> opEnd;
|
||||||
T retval;
|
T retval;
|
||||||
Glib::Thread *workThread;
|
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 ()
|
void workingThread ()
|
||||||
{
|
{
|
||||||
retval = opStart.emit ();
|
retval = opStart.emit ();
|
||||||
|
gdk_threads_add_idle(ProgressConnector<T>::emitEndSignalUI, new sigc::signal0<bool>(opEnd));
|
||||||
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));
|
|
||||||
|
|
||||||
workThread = nullptr;
|
workThread = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
ProgressConnector (): retval( 0 ), workThread( nullptr ) { }
|
ProgressConnector (): retval( 0 ), workThread( nullptr ) { }
|
||||||
~ProgressConnector()
|
|
||||||
{
|
|
||||||
idle_register.destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
void startFunc (const sigc::slot0<T>& startHandler, const sigc::slot0<bool>& endHandler )
|
void startFunc (const sigc::slot0<T>& startHandler, const sigc::slot0<bool>& endHandler )
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user