deal correct with errno
[enigma2.git] / lib / base / thread.cpp
index ceb50bfe350c3dbab479f9150f066ebdfff3f024..9878856eaa483007ccaa7d92f42043645c49a835 100644 (file)
@@ -2,6 +2,7 @@
 
 #include <stdio.h>
 #include <unistd.h>
+#include <assert.h>
 #include <lib/base/eerror.h>
 
 void eThread::thread_completed(void *ptr)
@@ -15,6 +16,8 @@ void eThread::thread_completed(void *ptr)
                p->m_state.up();
                assert(p->m_state.value() == 1);
        }
+
+       p->thread_finished();
 }
 
 void *eThread::wrapper(void *ptr)
@@ -93,12 +96,13 @@ int eThread::sync(void)
        return res; /* 0: thread is guaranteed not to run. 1: state unknown. */
 }
 
-void eThread::sendSignal(int sig)
+int eThread::sendSignal(int sig)
 {
        if (m_alive)
-               pthread_kill(the_thread, sig);
+               return pthread_kill(the_thread, sig);
        else
                eDebug("send signal to non running thread");
+       return -1;
 }
 
 void eThread::kill(bool sendcancel)