X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fbase%2Ffilepush.cpp;h=3412c84a3a0744f8994296172cdf0973ec9cebd8;hp=ed2a21855e19ee668d9ef17434944f9964ed2d51;hb=13705824885aa7f8fb779713eab7d0e5874769a4;hpb=e68a1617b7c1efbedf8b28309943dd7669daaad0 diff --git a/lib/base/filepush.cpp b/lib/base/filepush.cpp index ed2a218..3412c84 100644 --- a/lib/base/filepush.cpp +++ b/lib/base/filepush.cpp @@ -190,8 +190,10 @@ void eFilePushThread::thread() { eDebug("sending PVR commit"); - struct pollfd pfd[1] = {m_fd_dest, POLLHUP}; - poll(pfd, 1, 10000); + struct pollfd pfd; + pfd.fd = m_fd_dest; + pfd.events = POLLIN; + 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) @@ -261,15 +263,9 @@ 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 - while(!sendSignal(SIGUSR1)) - { - eDebug("send SIGUSR1 to thread context"); - usleep(5000); // wait msek - } - kill(); + eDebug("stopping thread."); /* just do it ONCE. it won't help to do this more than once. */ + sendSignal(SIGUSR1); + kill(0); } void eFilePushThread::pause()