diff options
author | Ling Hu <ling.hu@nokia.com> | 2012-06-21 16:18:05 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-06-25 06:39:08 +0200 |
commit | 1b7da9e0adf8a2638061d75e2697177be20ddc72 (patch) | |
tree | 5f5616f7a848c7e627240759ec1c7dba8ce9d8ac /src/plugins/wmf/player/mfplayerservice.cpp | |
parent | 6d301388e1484c55c4f715d26c136c91d1b5dea9 (diff) |
Fixed some crash with WMF backend
Change-Id: I721ba049e2ecafff53ee70d5b930fb52c15fbe09
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Diffstat (limited to 'src/plugins/wmf/player/mfplayerservice.cpp')
-rw-r--r-- | src/plugins/wmf/player/mfplayerservice.cpp | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/plugins/wmf/player/mfplayerservice.cpp b/src/plugins/wmf/player/mfplayerservice.cpp index c5f24cc30..c4c3fbda6 100644 --- a/src/plugins/wmf/player/mfplayerservice.cpp +++ b/src/plugins/wmf/player/mfplayerservice.cpp @@ -52,6 +52,7 @@ #include "mfplayerservice.h" #include "mfplayersession.h" #include "mfmetadatacontrol.h" +int MFPlayerService::s_refCount = 0; MFPlayerService::MFPlayerService(QObject *parent) : QMediaService(parent) @@ -61,17 +62,19 @@ MFPlayerService::MFPlayerService(QObject *parent) #endif , m_videoRendererControl(0) { - CoInitialize(NULL); - MFStartup(MF_VERSION); + s_refCount++; + if (s_refCount == 1) { + CoInitialize(NULL); + MFStartup(MF_VERSION); + } + m_audioEndpointControl = new MFAudioEndpointControl(this); m_session = new MFPlayerSession(this); m_player = new MFPlayerControl(m_session); - m_audioEndpointControl = new MFAudioEndpointControl(this); m_metaDataControl = new MFMetaDataControl(this); } MFPlayerService::~MFPlayerService() { - #ifndef Q_WS_SIMULATOR if (m_videoWindowControl) delete m_videoWindowControl; @@ -80,10 +83,14 @@ MFPlayerService::~MFPlayerService() if (m_videoRendererControl) delete m_videoRendererControl; - delete m_session; + m_session->close(); + m_session->Release(); - MFShutdown(); - CoUninitialize(); + s_refCount--; + if (s_refCount == 0) { + MFShutdown(); + CoUninitialize(); + } } QMediaControl* MFPlayerService::requestControl(const char *name) |