From 2415002fc515ad9a498f3990542b14530a6ebe32 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 17 Apr 2016 19:28:20 +0200 Subject: [PATCH] Audio/Sound: Fix GetPlayingOffset/SetPlayingOffset on some implementations Former-commit-id: 64223409d16af0d8ada3edeb2eb24366c5e312ca --- src/Nazara/Audio/Sound.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Nazara/Audio/Sound.cpp b/src/Nazara/Audio/Sound.cpp index 192bbb96b..7198a01d6 100644 --- a/src/Nazara/Audio/Sound.cpp +++ b/src/Nazara/Audio/Sound.cpp @@ -49,10 +49,10 @@ namespace Nz UInt32 Sound::GetPlayingOffset() const { - ALfloat seconds = -1.f; - alGetSourcef(m_source, AL_SEC_OFFSET, &seconds); + ALint samples = 0; + alGetSourcei(m_source, AL_SAMPLE_OFFSET, &samples); - return static_cast(seconds*1000); + return static_cast(1000ULL * samples / m_buffer->GetSampleRate()); } SoundStatus Sound::GetStatus() const @@ -160,7 +160,7 @@ namespace Nz void Sound::SetPlayingOffset(UInt32 offset) { - alSourcef(m_source, AL_SEC_OFFSET, offset/1000.f); + alSourcei(m_source, AL_SAMPLE_OFFSET, static_cast(offset/1000.f * m_buffer->GetSampleRate())); } void Sound::Stop()