aboutsummaryrefslogtreecommitdiff
path: root/lib/base/filepush.cpp
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2006-04-03 21:03:16 +0000
committerFelix Domke <tmbinc@elitedvb.net>2006-04-03 21:03:16 +0000
commit2c76959422e7f57e43a359ff1d5ceb74dc4232d5 (patch)
tree765e6b96e65f2c5f43146a68bb5fd305ad934747 /lib/base/filepush.cpp
parent0b93abf527c246663351f518fea47e28cc4eabc7 (diff)
downloadenigma2-2c76959422e7f57e43a359ff1d5ceb74dc4232d5.tar.gz
enigma2-2c76959422e7f57e43a359ff1d5ceb74dc4232d5.zip
follow eThread changes: mainly thread_running -> sync, hasStarted()
Diffstat (limited to 'lib/base/filepush.cpp')
-rw-r--r--lib/base/filepush.cpp28
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();