iOS: fix audio clicks immediately after playing a source. Resolves issue #1485.

This commit is contained in:
Alex Szpakowski
2019-04-23 21:18:56 -03:00
parent 84f9f3f4d5
commit 276bdd1dbf
+10 -6
View File
@@ -919,27 +919,31 @@ bool Source::playAtomic(ALuint source)
// Clear errors.
alGetError();
alSourcePlay(source);
// Seek to the current/pending offset before playing. If this call happens
// immediately after alSourcePlay it could introduce a click depending on
// the platform, because the source is asynchronously playing by then.
alSourcef(source, AL_SAMPLE_OFFSET, offsetSamples);
bool success = alGetError() == AL_NO_ERROR;
alSourcePlay(source);
success &= alGetError() == AL_NO_ERROR;
if (sourceType == TYPE_STREAM)
{
valid = true; //isPlaying() needs source to be valid
if (!isPlaying())
success = false;
}
else if (success)
{
alSourcef(source, AL_SAMPLE_OFFSET, offsetSamples);
success = alGetError() == AL_NO_ERROR;
}
if (!success)
{
valid = true; //stop() needs source to be valid
stop();
}
// Static sources: reset the pending offset since it's not valid anymore.
if (sourceType != TYPE_STREAM)
offsetSamples = offsetSeconds = 0;