From 2c76959422e7f57e43a359ff1d5ceb74dc4232d5 Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Mon, 3 Apr 2006 21:03:16 +0000 Subject: follow eThread changes: mainly thread_running -> sync, hasStarted() --- lib/base/filepush.cpp | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) (limited to 'lib/base/filepush.cpp') 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(); -- cgit v1.2.3