Trying to fix potential resource leak

This commit is contained in:
Danila Malyutin 2015-06-04 15:57:05 +03:00 committed by Nekotekina
parent 8483b17995
commit e338c3938b
3 changed files with 24 additions and 9 deletions

View file

@ -9,6 +9,11 @@ AudioManager::AudioManager() : m_audio_out(nullptr)
{ {
} }
AudioManager::~AudioManager()
{
Close();
}
void AudioManager::Init() void AudioManager::Init()
{ {
if (m_audio_out) return; if (m_audio_out) return;

View file

@ -35,6 +35,7 @@ class AudioManager
AudioThread* m_audio_out; AudioThread* m_audio_out;
public: public:
AudioManager(); AudioManager();
~AudioManager();
void Init(); void Init();
void Close(); void Close();

View file

@ -8,7 +8,7 @@
XAudio2Thread::~XAudio2Thread() XAudio2Thread::~XAudio2Thread()
{ {
if (m_source_voice) Quit(); Quit();
} }
XAudio2Thread::XAudio2Thread() : m_xaudio2_instance(nullptr), m_master_voice(nullptr), m_source_voice(nullptr) XAudio2Thread::XAudio2Thread() : m_xaudio2_instance(nullptr), m_master_voice(nullptr), m_source_voice(nullptr)
@ -46,14 +46,23 @@ void XAudio2Thread::Init()
void XAudio2Thread::Quit() void XAudio2Thread::Quit()
{ {
Stop(); if (m_source_voice != nullptr)
m_source_voice->DestroyVoice(); {
m_source_voice = nullptr; Stop();
m_master_voice->DestroyVoice(); m_source_voice->DestroyVoice();
m_master_voice = nullptr; m_source_voice = nullptr;
m_xaudio2_instance->StopEngine(); }
m_xaudio2_instance->Release(); if (m_master_voice != nullptr)
m_xaudio2_instance = nullptr; {
m_master_voice->DestroyVoice();
m_master_voice = nullptr;
}
if (m_xaudio2_instance != nullptr)
{
m_xaudio2_instance->StopEngine();
m_xaudio2_instance->Release();
m_xaudio2_instance = nullptr;
}
CoUninitialize(); CoUninitialize();
} }