summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYoann Lopes <yoann.lopes@digia.com>2012-12-06 15:42:47 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-12-07 13:04:12 +0100
commitad835347361c16b662f73680cbaa0444c1ec4064 (patch)
tree0e83f60215e743b8c47bbb420091d9aee3a19f7f
parent31fdbb1c22a06fc41f3df10e5959c66f59634986 (diff)
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.cpp3
-rw-r--r--src/plugins/wmf/player/mfplayersession.cpp2
-rw-r--r--src/plugins/wmf/wmfserviceplugin.cpp2
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(