From d5e5f38e2f83c7fd4e104cfd5098574d5072990e Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Mon, 25 Aug 2014 03:46:11 -0300 Subject: [PATCH] Fixed Source:tell crashing if the Source is static. --- src/modules/audio/openal/Source.cpp | 5 ++++- src/modules/audio/openal/Source.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/modules/audio/openal/Source.cpp b/src/modules/audio/openal/Source.cpp index a60907a79..20d2daf09 100644 --- a/src/modules/audio/openal/Source.cpp +++ b/src/modules/audio/openal/Source.cpp @@ -62,6 +62,7 @@ Source::Source(Pool *pool, love::sound::SoundData *soundData) , cone() , offsetSamples(0) , offsetSeconds(0) + , sampleRate(soundData->getSampleRate()) , channels(soundData->getChannels()) , decoder(nullptr) , toLoop(0) @@ -94,6 +95,7 @@ Source::Source(Pool *pool, love::sound::Decoder *decoder) , cone() , offsetSamples(0) , offsetSeconds(0) + , sampleRate(decoder->getSampleRate()) , channels(decoder->getChannels()) , decoder(decoder) , toLoop(0) @@ -125,6 +127,7 @@ Source::Source(const Source &s) , cone(s.cone) , offsetSamples(0) , offsetSeconds(0) + , sampleRate(s.sampleRate) , channels(s.channels) , decoder(nullptr) , toLoop(0) @@ -383,7 +386,7 @@ float Source::tellAtomic(void *unit) const default: { alGetSourcef(source, AL_SAMPLE_OFFSET, &offset); - offset /= decoder->getSampleRate(); + offset /= sampleRate; if (type == TYPE_STREAM) offset += offsetSeconds; } break; diff --git a/src/modules/audio/openal/Source.h b/src/modules/audio/openal/Source.h index a8985aa30..6c923e3e3 100644 --- a/src/modules/audio/openal/Source.h +++ b/src/modules/audio/openal/Source.h @@ -180,6 +180,7 @@ private: float offsetSamples; float offsetSeconds; + int sampleRate; int channels; Object::StrongRef decoder;