From 9bca64fc5eee598f97eba1052f1db250c5c7e43b Mon Sep 17 00:00:00 2001 From: Andrew den Exter Date: Fri, 12 Feb 2010 16:51:32 +1000 Subject: Fix corruption of Direct Show event queue. The mutex proctecting the queue was being released and reacquired between when the head and tail are cleared, making it possible to append a new item to a popped, or even deleted tail, resulting in a lost event. --- .../mediaservices/directshow/mediaplayer/directshoweventloop.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/plugins/mediaservices/directshow/mediaplayer/directshoweventloop.cpp b/src/plugins/mediaservices/directshow/mediaplayer/directshoweventloop.cpp index 4f9a19d..07541c2 100644 --- a/src/plugins/mediaservices/directshow/mediaplayer/directshoweventloop.cpp +++ b/src/plugins/mediaservices/directshow/mediaplayer/directshoweventloop.cpp @@ -148,13 +148,14 @@ void DirectShowEventLoop::processEvents() DirectShowPostedEvent *post = m_postsHead; m_postsHead = m_postsHead->next; + if (!m_postsHead) + m_postsTail = 0; + locker.unlock(); QCoreApplication::sendEvent(post->receiver, post->event); delete post; locker.relock(); } - - m_postsTail = 0; } QT_END_NAMESPACE -- cgit v0.12