diff --git a/src/modules/audio/openal/Source.cpp b/src/modules/audio/openal/Source.cpp index a58c1fe79..99f3b7923 100644 --- a/src/modules/audio/openal/Source.cpp +++ b/src/modules/audio/openal/Source.cpp @@ -595,6 +595,11 @@ bool Source::isLooping() const bool Source::playAtomic() { + // This Source may now be associated with an OpenAL source that still has + // the properties of another love Source. Let's reset it to the settings + // of the new one. + reset(); + if (type == TYPE_STATIC) { alSourcei(source, AL_BUFFER, staticBuffer->getBuffer()); @@ -618,11 +623,6 @@ bool Source::playAtomic() alSourceQueueBuffers(source, usedBuffers, streamBuffers); } - // This Source may now be associated with an OpenAL source that still has - // the properties of another love Source. Let's reset it to the settings - // of the new one. - reset(); - // Clear errors. alGetError(); @@ -714,6 +714,7 @@ void Source::rewindAtomic() void Source::reset() { + alSourcei(source, AL_BUFFER, 0); alSourcefv(source, AL_POSITION, position); alSourcefv(source, AL_VELOCITY, velocity); alSourcefv(source, AL_DIRECTION, direction);