diff options
Diffstat (limited to 'src/plugins/wmf/player/mfaudioendpointcontrol.cpp')
-rw-r--r-- | src/plugins/wmf/player/mfaudioendpointcontrol.cpp | 17 |
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; } |