From ad835347361c16b662f73680cbaa0444c1ec4064 Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Thu, 6 Dec 2012 15:42:47 +0100 Subject: [PATCH] WMF: Fixed shutdown sequence. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Reviewed-by: Jason Barron --- src/plugins/wmf/player/mfplayerservice.cpp | 3 ++- src/plugins/wmf/player/mfplayersession.cpp | 2 +- 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 2ca74ad..5bda9f9 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 e9c4056..1509586 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 9d1a359..8cff66f 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( -- 2.7.4