cocos2dx 3.15 android 同时快速播放停止多个音效崩溃问题

快速频繁的播放和停止音效很大几率造成崩溃
跟踪了一下代码发现android 的AudioEngineImpl里面的play2d方法有点问题
std::string filePath = *AudioEngine::_audioIDInfoMap[id].filePath
设置回调在_audioIDInfoMap里面并找不到这个id
AudioMixerController 里输出这个 Doesn’t have enough tracks: 就跪了
目前是这么解决的
int id = audioId;
auto it = AudioEngine::_audioIDInfoMap.find(id);
if (it == AudioEngine::_audioIDInfoMap.end())
{
ALOGV(“Ignore null path: %d”, static_cast(id));
return;
}
但是不知道为什么会找不到这个id
还请引擎团队的大神们帮忙解决一下
@zilong@minggo

help:sob:

请问有大神知道怎么解决么。。。

帮你 @dumganhar,github的最新代码有可能解决了这个问题。

mark一下 升级了一周 暂时只遇到了几次

感谢感谢 我去看看先

我也是崩在这,最终使用了之前版本的代码就好了,供参考

int id = player->getId();

            ALOGV("Removing player id=%d, state:%d", id, (int)state);

            auto iter = _callbackMap.find(id);
            if (iter != _callbackMap.end())
            {
                if (state == IAudioPlayer::State::OVER)
                {
                    iter->second(id, *AudioEngine::_audioIDInfoMap[id].filePath);
                }
                _callbackMap.erase(iter);
            }
            AudioEngine::remove(id);
            _audioPlayers.erase(id);

github上最新的代码修复了这个问题