some more work on plugin manager
[enigma2.git] / lib / base / filepush.cpp
index e99e956c2a4a2cd0b3df5df7f0cb47796a74cfcb..3412c84a3a0744f8994296172cdf0973ec9cebd8 100644 (file)
@@ -189,9 +189,15 @@ void eFilePushThread::thread()
                        if (m_send_pvr_commit && !already_empty)
                        {
                                eDebug("sending PVR commit");
+                               
+                               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)
-                                       continue;
+//                             if (::ioctl(m_fd_dest, PVR_COMMIT) < 0 && errno == EINTR)
+//                                     continue;
                                eDebug("commit done");
                                                /* well check again */
                                continue;
@@ -257,10 +263,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);
 }