[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    extragear/multimedia/kaffeine/src/dvb
From:       Christoph Pfister <christophpfister () gmail ! com>
Date:       2009-10-31 21:34:35
Message-ID: 1257024875.860896.23225.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1043147 by pfister:

discard data properly when retuning


 M  +22 -4     dvbdevice_linux.cpp  


--- trunk/extragear/multimedia/kaffeine/src/dvb/dvbdevice_linux.cpp #1043146:1043147
@@ -64,6 +64,7 @@
 	}
 
 	void start(int dvrFd_, DvbAbstractDeviceBuffer *buffer_);
+	void discardBuffers();
 	void stop();
 
 	bool isRunning()
@@ -87,6 +88,25 @@
 	QThread::start();
 }
 
+void DvbDeviceThread::discardBuffers()
+{
+	Q_ASSERT(dvrFd != -1);
+
+	if (write(pipes[1], " ", 1) != 1) {
+		kError() << "write() failed";
+	}
+
+	wait();
+
+	char temp;
+	read(pipes[0], &temp, 1);
+
+	while (read(dvrFd, buffer->getCurrent(), buffer->size()) > 0) {
+	}
+
+	QThread::start();
+}
+
 void DvbDeviceThread::stop()
 {
 	Q_ASSERT(dvrFd != -1);
@@ -561,8 +581,7 @@
 			return false;
 		}
 
-		// FIXME discard pending buffers
-
+		thread->discardBuffers();
 		return true;
 	    }
 
@@ -603,8 +622,7 @@
 		return false;
 	}
 
-	// FIXME discard pending buffers
-
+	thread->discardBuffers();
 	return true;
 }
 
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic