Browse Source

Fixed Source:tell crashing if the Source is static.

Alex Szpakowski 11 years ago
parent
commit
d5e5f38e2f
2 changed files with 5 additions and 1 deletions
  1. 4 1
      src/modules/audio/openal/Source.cpp
  2. 1 0
      src/modules/audio/openal/Source.h

+ 4 - 1
src/modules/audio/openal/Source.cpp

@@ -62,6 +62,7 @@ Source::Source(Pool *pool, love::sound::SoundData *soundData)
 	, cone()
 	, cone()
 	, offsetSamples(0)
 	, offsetSamples(0)
 	, offsetSeconds(0)
 	, offsetSeconds(0)
+	, sampleRate(soundData->getSampleRate())
 	, channels(soundData->getChannels())
 	, channels(soundData->getChannels())
 	, decoder(nullptr)
 	, decoder(nullptr)
 	, toLoop(0)
 	, toLoop(0)
@@ -94,6 +95,7 @@ Source::Source(Pool *pool, love::sound::Decoder *decoder)
 	, cone()
 	, cone()
 	, offsetSamples(0)
 	, offsetSamples(0)
 	, offsetSeconds(0)
 	, offsetSeconds(0)
+	, sampleRate(decoder->getSampleRate())
 	, channels(decoder->getChannels())
 	, channels(decoder->getChannels())
 	, decoder(decoder)
 	, decoder(decoder)
 	, toLoop(0)
 	, toLoop(0)
@@ -125,6 +127,7 @@ Source::Source(const Source &s)
 	, cone(s.cone)
 	, cone(s.cone)
 	, offsetSamples(0)
 	, offsetSamples(0)
 	, offsetSeconds(0)
 	, offsetSeconds(0)
+	, sampleRate(s.sampleRate)
 	, channels(s.channels)
 	, channels(s.channels)
 	, decoder(nullptr)
 	, decoder(nullptr)
 	, toLoop(0)
 	, toLoop(0)
@@ -383,7 +386,7 @@ float Source::tellAtomic(void *unit) const
 		default:
 		default:
 			{
 			{
 				alGetSourcef(source, AL_SAMPLE_OFFSET, &offset);
 				alGetSourcef(source, AL_SAMPLE_OFFSET, &offset);
-				offset /= decoder->getSampleRate();
+				offset /= sampleRate;
 				if (type == TYPE_STREAM) offset += offsetSeconds;
 				if (type == TYPE_STREAM) offset += offsetSeconds;
 			}
 			}
 			break;
 			break;

+ 1 - 0
src/modules/audio/openal/Source.h

@@ -180,6 +180,7 @@ private:
 	float offsetSamples;
 	float offsetSamples;
 	float offsetSeconds;
 	float offsetSeconds;
 
 
+	int sampleRate;
 	int channels;
 	int channels;
 
 
 	Object::StrongRef<love::sound::Decoder> decoder;
 	Object::StrongRef<love::sound::Decoder> decoder;