X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/f9496083cda8b890a36f2d80c24883fe88a4ad37..ebd1552cdd3e60d5eb21f97e46570de2e17ed19f:/lib/base/filepush.cpp diff --git a/lib/base/filepush.cpp b/lib/base/filepush.cpp index 8aed99fa..d12b8efa 100644 --- a/lib/base/filepush.cpp +++ b/lib/base/filepush.cpp @@ -31,7 +31,6 @@ 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; @@ -39,6 +38,8 @@ void eFilePushThread::thread() 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); @@ -166,8 +167,10 @@ int eFilePushThread::start(const char *filename, int fd_dest) 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();