X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/a7cfb0cd7b847b559309202f7c06fe1f8f3117b5..ebd1552cdd3e60d5eb21f97e46570de2e17ed19f:/lib/base/filepush.cpp diff --git a/lib/base/filepush.cpp b/lib/base/filepush.cpp index 4bc52050..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); @@ -60,7 +61,7 @@ void eFilePushThread::thread() // ... we would stop the thread } - posix_fadvise(m_fd_dest, dest_pos, w, POSIX_FADV_DONTNEED); +// posix_fadvise(m_fd_dest, dest_pos, w, POSIX_FADV_DONTNEED); dest_pos += w; written_since_last_sync += w; @@ -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();