IOS下,版本为3.17,看代码应该是所有版本都存在的
复现步骤:
1:游戏内随便找一个输入框
2:点一下输入框,然后会弹出系统输入框,点击右下角的录音符号
3:关闭输入框
4:随便用AudioPlayer播放一个音乐,然后就会死循环
AudioPlayer.mm
#if CC_TARGET_PLATFORM == CC_PLATFORM_IOS
// some specific OpenAL implement defects existed on iOS platform
// refer to: https://github.com/cocos2d/cocos2d-x/issues/18597
ALint sourceState;
ALint bufferProcessed = 0;
alGetSourcei(_alSource, AL_SOURCE_STATE, &sourceState);
if (sourceState == AL_PLAYING) {
alGetSourcei(_alSource, AL_BUFFERS_PROCESSED, &bufferProcessed);
while (bufferProcessed < QUEUEBUFFER_NUM) { <-这里,bufferProcessed永远是0
std::this_thread::sleep_for(std::chrono::milliseconds(2));
alGetSourcei(_alSource, AL_BUFFERS_PROCESSED, &bufferProcessed);
}
alSourceUnqueueBuffers(_alSource, QUEUEBUFFER_NUM, _bufferIds); CHECK_AL_ERROR_DEBUG();
}
ALOGVV(“UnqueueBuffers Before alSourceStop”);
#endif
我试着强制打破循环,会导致游戏没声音,还会提示说无法播放音乐,因为已经达到了Audio实例的最大数量
有哪位大佬知道如何修复的吗?
