[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/runtime/phonon/xine
From: Matthias Kretz <kretz () kde ! org>
Date: 2007-09-26 22:00:31
Message-ID: 1190844031.304879.17597.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 717453 by mkretz:
fix deadlock when the frontend AbstractMediaStream never calls setStreamSize but endOfData
M +10 -2 bytestream.cpp
--- trunk/KDE/kdebase/runtime/phonon/xine/bytestream.cpp #717452:717453
@@ -393,12 +393,20 @@
void ByteStream::endOfData()
{
PXINE_DEBUG;
- QMutexLocker lock(&m_mutex);
+
+ m_mutex.lock();
+ m_seekMutex.lock();
+ m_streamSizeMutex.lock();
m_eod = true;
// don't reset the XineStream because many demuxers hit eod while trying to find the format of
// the data
// stream().setMrl(mrl());
+ m_seekWaitCondition.wakeAll();
+ m_seekMutex.unlock();
m_waitingForData.wakeAll();
+ m_mutex.unlock();
+ m_waitForStreamSize.wakeAll();
+ m_streamSizeMutex.unlock();
}
void ByteStream::setStreamSeekable(bool seekable)
@@ -464,7 +472,7 @@
if (m_streamSize == 0) {
// stream size has not been set yet
QMutexLocker lock(&m_streamSizeMutex);
- if (m_streamSize == 0) {
+ if (m_streamSize == 0 && !m_eod) {
m_waitForStreamSize.wait(&m_streamSizeMutex);
}
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic