summaryrefslogtreecommitdiffstats
path: root/src/plugins/wmf/player/mfaudioendpointcontrol.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/wmf/player/mfaudioendpointcontrol.cpp')
-rw-r--r--src/plugins/wmf/player/mfaudioendpointcontrol.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/plugins/wmf/player/mfaudioendpointcontrol.cpp b/src/plugins/wmf/player/mfaudioendpointcontrol.cpp
index 6d421fd06..7639f4f9e 100644
--- a/src/plugins/wmf/player/mfaudioendpointcontrol.cpp
+++ b/src/plugins/wmf/player/mfaudioendpointcontrol.cpp
@@ -46,17 +46,23 @@ MFAudioEndpointControl::MFAudioEndpointControl(QObject *parent)
: QAudioOutputSelectorControl(parent)
, m_currentActivate(0)
{
- updateEndpoints();
- setActiveOutput(m_defaultEndpoint);
}
MFAudioEndpointControl::~MFAudioEndpointControl()
{
+ clear();
+}
+
+void MFAudioEndpointControl::clear()
+{
+ m_activeEndpoint.clear();
+
foreach (LPWSTR wstrID, m_devices)
CoTaskMemFree(wstrID);
if (m_currentActivate)
m_currentActivate->Release();
+ m_currentActivate = NULL;
}
QList<QString> MFAudioEndpointControl::availableOutputs() const
@@ -119,8 +125,13 @@ void MFAudioEndpointControl::setActiveOutput(const QString &name)
m_activeEndpoint = name;
}
-IMFActivate* MFAudioEndpointControl::currentActivate() const
+IMFActivate* MFAudioEndpointControl::createActivate()
{
+ clear();
+
+ updateEndpoints();
+ setActiveOutput(m_defaultEndpoint);
+
return m_currentActivate;
}