diff options
author | Yoann Lopes <yoann.lopes@digia.com> | 2012-12-06 15:42:47 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-12-07 13:04:12 +0100 |
commit | ad835347361c16b662f73680cbaa0444c1ec4064 (patch) | |
tree | 0e83f60215e743b8c47bbb420091d9aee3a19f7f | |
parent | 31fdbb1c22a06fc41f3df10e5959c66f59634986 (diff) | |
download | qtmultimedia-ad835347361c16b662f73680cbaa0444c1ec4064.tar.gz |
WMF: Fixed shutdown sequence.
A wrong shutdown sequence was causing a wait condition to never be met,
resulting in a 5 seconds hang on shutdown.
Also reduced the wait condition timeout to 100 ms.
Task-number: QTBUG-28432
Change-Id: Ib415bf66634603d839be3e34e497e3a3c5a19ad9
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
Reviewed-by: Jason Barron <jason@cutehacks.com>
-rw-r--r-- | src/plugins/wmf/player/mfplayerservice.cpp | 3 | ||||
-rw-r--r-- | src/plugins/wmf/player/mfplayersession.cpp | 2 | ||||
-rw-r--r-- | src/plugins/wmf/wmfserviceplugin.cpp | 2 |
3 files changed, 4 insertions, 3 deletions
diff --git a/src/plugins/wmf/player/mfplayerservice.cpp b/src/plugins/wmf/player/mfplayerservice.cpp index 2ca74ad3e..5bda9f983 100644 --- a/src/plugins/wmf/player/mfplayerservice.cpp +++ b/src/plugins/wmf/player/mfplayerservice.cpp @@ -71,6 +71,8 @@ MFPlayerService::MFPlayerService(QObject *parent) MFPlayerService::~MFPlayerService() { + m_session->close(); + #ifndef Q_WS_SIMULATOR if (m_videoWindowControl) delete m_videoWindowControl; @@ -79,7 +81,6 @@ MFPlayerService::~MFPlayerService() if (m_videoRendererControl) delete m_videoRendererControl; - m_session->close(); m_session->Release(); } diff --git a/src/plugins/wmf/player/mfplayersession.cpp b/src/plugins/wmf/player/mfplayersession.cpp index e9c40567c..150958660 100644 --- a/src/plugins/wmf/player/mfplayersession.cpp +++ b/src/plugins/wmf/player/mfplayersession.cpp @@ -454,7 +454,7 @@ void MFPlayerSession::close() if (m_session) { hr = m_session->Close(); if (SUCCEEDED(hr)) { - DWORD dwWaitResult = WaitForSingleObject(m_hCloseEvent, 5000); + DWORD dwWaitResult = WaitForSingleObject(m_hCloseEvent, 100); if (dwWaitResult == WAIT_TIMEOUT) { qWarning() << "session close time out!"; } diff --git a/src/plugins/wmf/wmfserviceplugin.cpp b/src/plugins/wmf/wmfserviceplugin.cpp index 9d1a359db..8cff66f30 100644 --- a/src/plugins/wmf/wmfserviceplugin.cpp +++ b/src/plugins/wmf/wmfserviceplugin.cpp @@ -92,8 +92,8 @@ QMediaService* WMFServicePlugin::create(QString const& key) void WMFServicePlugin::release(QMediaService *service) { - releaseRefCount(); delete service; + releaseRefCount(); } QMediaServiceProviderHint::Features WMFServicePlugin::supportedFeatures( |