From 4a594e382e063bc9f313683d2bd6c679cbad0e9a Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Wed, 18 Jan 2006 15:46:35 +0000 Subject: experimental PVR commit support --- lib/base/filepush.cpp | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'lib/base/filepush.cpp') diff --git a/lib/base/filepush.cpp b/lib/base/filepush.cpp index 7ab8c0d3..39319a24 100644 --- a/lib/base/filepush.cpp +++ b/lib/base/filepush.cpp @@ -3,11 +3,15 @@ #include #include #include +#include + +#define PVR_COMMIT 1 eFilePushThread::eFilePushThread(): m_messagepump(eApp, 0) { m_stop = 0; flush(); + enablePVRCommit(0); CONNECT(m_messagepump.recv_msg, eFilePushThread::recvEvent); } @@ -18,6 +22,8 @@ static void signal_handler(int x) void eFilePushThread::thread() { off_t dest_pos = 0; + + int already_empty = 0; eDebug("FILEPUSH THREAD START"); // this is a race. FIXME. @@ -66,6 +72,17 @@ void eFilePushThread::thread() } if (m_buf_end == 0) { + /* on EOF, try COMMITting once. */ + if (m_send_pvr_commit && !already_empty) + { + eDebug("sending PVR commit"); + already_empty = 1; + if (::ioctl(m_fd_dest, PVR_COMMIT) == EINTR) + continue; + eDebug("commit done"); + /* well check again */ + continue; + } sendEvent(evtEOF); #if 0 @@ -77,7 +94,8 @@ void eFilePushThread::thread() } #endif break; - } + } else + already_empty = 0; // printf("FILEPUSH: read %d bytes\n", m_buf_end); } @@ -119,6 +137,10 @@ void eFilePushThread::flush() m_buf_start = m_buf_end = 0; } +void eFilePushThread::enablePVRCommit(int s) +{ + m_send_pvr_commit = s; +} void eFilePushThread::sendEvent(int evt) { -- cgit v1.2.3