From 057de1544b3670594774d010c666c154b252afd9 Mon Sep 17 00:00:00 2001 From: Lynix Date: Thu, 24 Nov 2016 20:17:30 +0100 Subject: [PATCH] Audio/Music: Fix Stop not resetting playing offset if music was already stopped Also prevented a useless seek at destruction --- include/Nazara/Audio/Music.hpp | 1 + src/Nazara/Audio/Music.cpp | 20 ++++++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/include/Nazara/Audio/Music.hpp b/include/Nazara/Audio/Music.hpp index f31882890..29e71fab7 100644 --- a/include/Nazara/Audio/Music.hpp +++ b/include/Nazara/Audio/Music.hpp @@ -73,6 +73,7 @@ namespace Nz bool FillAndQueueBuffer(unsigned int buffer); void MusicThread(); + void StopThread(); static MusicLoader::LoaderList s_loaders; }; diff --git a/src/Nazara/Audio/Music.cpp b/src/Nazara/Audio/Music.cpp index d47ee8f0f..b2b0e7e3b 100644 --- a/src/Nazara/Audio/Music.cpp +++ b/src/Nazara/Audio/Music.cpp @@ -91,7 +91,7 @@ namespace Nz { if (m_impl) { - Stop(); + StopThread(); delete m_impl; m_impl = nullptr; @@ -339,13 +339,8 @@ namespace Nz { NazaraAssert(m_impl, "Music not created"); - if (m_impl->streaming) - { - m_impl->streaming = false; - m_impl->thread.Join(); - - SetPlayingOffset(0); - } + StopThread(); + SetPlayingOffset(0); } bool Music::FillAndQueueBuffer(unsigned int buffer) @@ -444,5 +439,14 @@ namespace Nz alDeleteBuffers(NAZARA_AUDIO_STREAMED_BUFFER_COUNT, buffers); } + void Music::StopThread() + { + if (m_impl->streaming) + { + m_impl->streaming = false; + m_impl->thread.Join(); + } + } + MusicLoader::LoaderList Music::s_loaders; }