add possibility to do things after thread start.. but before setting the thread to...
[enigma2.git] / lib / base / filepush.cpp
index 8aed99fa3b611eeb14d1d43f3372c85b9d430dc6..bbce531dd56f1a03e2d7fa669193f7a7938e81bb 100644 (file)
@@ -33,12 +33,6 @@ void eFilePushThread::thread()
        eDebug("FILEPUSH THREAD START");
                // this is a race. FIXME.
        
-               /* we set the signal to not restart syscalls, so we can detect our signal. */
-       struct sigaction act;
-       act.sa_handler = signal_handler; // no, SIG_IGN doesn't do it. we want to receive the -EINTR
-       act.sa_flags = 0;
-       sigaction(SIGUSR1, &act, 0);
-       
        dest_pos = lseek(m_fd_dest, 0, SEEK_CUR);
        source_pos = m_raw_source.lseek(0, SEEK_CUR);
        
@@ -164,6 +158,21 @@ int eFilePushThread::start(const char *filename, int fd_dest)
        return 0;
 }
 
+void eFilePushThread::installSigUSR1Handler()
+{
+               /* we set the signal to not restart syscalls, so we can detect our signal. */
+       struct sigaction act;
+       act.sa_handler = signal_handler; // no, SIG_IGN doesn't do it. we want to receive the -EINTR
+       act.sa_flags = 0;
+       sigaction(SIGUSR1, &act, 0);
+}
+
+// called from thread before alive is set to 1
+void eFilePushThread::before_set_thread_alive()
+{
+       installSigUSR1Handler();
+}
+
 void eFilePushThread::stop()
 {
        if (!thread_running()) /* FIXME: races */