diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2006-04-03 21:03:16 +0000 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2006-04-03 21:03:16 +0000 |
| commit | 2c76959422e7f57e43a359ff1d5ceb74dc4232d5 (patch) | |
| tree | 765e6b96e65f2c5f43146a68bb5fd305ad934747 /lib/base | |
| parent | 0b93abf527c246663351f518fea47e28cc4eabc7 (diff) | |
| download | enigma2-2c76959422e7f57e43a359ff1d5ceb74dc4232d5.tar.gz enigma2-2c76959422e7f57e43a359ff1d5ceb74dc4232d5.zip | |
follow eThread changes: mainly thread_running -> sync, hasStarted()
Diffstat (limited to 'lib/base')
| -rw-r--r-- | lib/base/filepush.cpp | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/lib/base/filepush.cpp b/lib/base/filepush.cpp index bbce531d..d12b8efa 100644 --- a/lib/base/filepush.cpp +++ b/lib/base/filepush.cpp @@ -31,7 +31,14 @@ void eFilePushThread::thread() int already_empty = 0; 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); + + hasStarted(); dest_pos = lseek(m_fd_dest, 0, SEEK_CUR); source_pos = m_raw_source.lseek(0, SEEK_CUR); @@ -158,25 +165,12 @@ 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 */ + /* if we aren't running, don't bother stopping. */ + if (!sync()) return; + m_stop = 1; sendSignal(SIGUSR1); kill(); |
