--- a/qtmobility/plugins/multimedia/directshow/player/directshoweventloop.cpp Fri Apr 16 15:51:22 2010 +0300
+++ b/qtmobility/plugins/multimedia/directshow/player/directshoweventloop.cpp Mon May 03 13:18:40 2010 +0300
@@ -65,20 +65,16 @@
};
DirectShowEventLoop::DirectShowEventLoop(QObject *parent)
- : QWinEventNotifier(parent)
+ : QObject(parent)
, m_postsHead(0)
, m_postsTail(0)
, m_eventHandle(::CreateEvent(0, 0, 0, 0))
, m_waitHandle(::CreateEvent(0, 0, 0, 0))
{
- setHandle(m_eventHandle);
- setEnabled(true);
}
DirectShowEventLoop::~DirectShowEventLoop()
{
- setEnabled(false);
-
::CloseHandle(m_eventHandle);
::CloseHandle(m_waitHandle);
@@ -120,17 +116,16 @@
m_postsTail = post;
+ QCoreApplication::postEvent(this, new QEvent(QEvent::User));
::SetEvent(m_eventHandle);
}
-bool DirectShowEventLoop::event(QEvent *event)
+void DirectShowEventLoop::customEvent(QEvent *event)
{
- if (event->type() == QEvent::WinEventAct) {
+ if (event->type() == QEvent::User) {
processEvents();
-
- return true;
} else {
- return QWinEventNotifier::event(event);
+ QObject::customEvent(event);
}
}
@@ -138,17 +133,18 @@
{
QMutexLocker locker(&m_mutex);
+ ::ResetEvent(m_eventHandle);
+
while(m_postsHead) {
- ::ResetEvent(m_eventHandle);
-
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;
}