diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-04-03 10:47:52 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-04-03 10:47:52 +0000 |
| commit | df88846fa78ebe40f935e0486462af0fc0ea81e9 (patch) | |
| tree | 886a9ea538e51656265e98440b32a1b08d657028 /lib/base/filepush.cpp | |
| parent | 2702c8f3dd44e91878013dc2ce552526e90046ba (diff) | |
| download | enigma2-df88846fa78ebe40f935e0486462af0fc0ea81e9.tar.gz enigma2-df88846fa78ebe40f935e0486462af0fc0ea81e9.zip | |
add possibility to do things after thread start.. but before setting the thread to alive
Diffstat (limited to 'lib/base/filepush.cpp')
| -rw-r--r-- | lib/base/filepush.cpp | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/lib/base/filepush.cpp b/lib/base/filepush.cpp index 8aed99fa..bbce531d 100644 --- a/lib/base/filepush.cpp +++ b/lib/base/filepush.cpp @@ -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 */ |
