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_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);
// ... 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;
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();