X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/a4b8eb676ba549ebe8cf347f15888e51d8914789..ccacb75cc03833ebc4a44bbc740bb8b196b53880:/lib/base/filepush.cpp diff --git a/lib/base/filepush.cpp b/lib/base/filepush.cpp index e99e956c..645d3685 100644 --- a/lib/base/filepush.cpp +++ b/lib/base/filepush.cpp @@ -189,9 +189,13 @@ void eFilePushThread::thread() if (m_send_pvr_commit && !already_empty) { eDebug("sending PVR commit"); + + struct pollfd pfd[1] = {m_fd_dest, POLLHUP}; + poll(pfd, 1, 10000); + sleep(5); /* HACK to allow ES buffer to drain */ already_empty = 1; - if (::ioctl(m_fd_dest, PVR_COMMIT) < 0 && errno == EINTR) - continue; +// if (::ioctl(m_fd_dest, PVR_COMMIT) < 0 && errno == EINTR) +// continue; eDebug("commit done"); /* well check again */ continue; @@ -257,10 +261,7 @@ void eFilePushThread::stop() m_stop = 1; - // fixmee.. here we need a better solution to ensure - // that the thread context take notice of the signal - // even when no syscall is in progress - eDebug("if enigma hangs here, the filepush thread is non-responsive. FIX THAT DAMN THREAD."); + eDebug("stopping thread."); /* just do it ONCE. it won't help to do this more than once. */ sendSignal(SIGUSR1); kill(0); }