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()
{
if (m_audio_out) return;

View File

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

View File

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