我正在使用cocos2dx-v3.17.2, ndk-r21d, android studio 4.1.1
. 我遇到了崩溃
cocos2d::TextureCache::loadImage() + 290
我来自 firebase crashlytics 的崩溃堆栈跟踪如下图所示:
我不使用TextureCache::addImageAsync or TextureCache::addImage
预加载纹理的方法。所以我无法理解实际发生了什么。
cocos代码如下:
void TextureCache::loadImage()
{
AsyncStruct *asyncStruct = nullptr;
while (!_needQuit)
{
std::unique_lock<std::mutex> ul(_requestMutex);
// pop an AsyncStruct from request queue
if (_requestQueue.empty())
{
asyncStruct = nullptr;
}
else
{
asyncStruct = _requestQueue.front();
_requestQueue.pop_front();
}
if (nullptr == asyncStruct) {
if (_needQuit) {
break;
}
_sleepCondition.wait(ul);
continue;
}
ul.unlock();
// load image
asyncStruct->loadSuccess = asyncStruct->image.initWithImageFileThreadSafe(asyncStruct->filename);
// ETC1 ALPHA supports.
if (asyncStruct->loadSuccess && asyncStruct->image.getFileType() == Image::Format::ETC && !s_etc1AlphaFileSuffix.empty())
{ // check whether alpha texture exists & load it
auto alphaFile = asyncStruct->filename + s_etc1AlphaFileSuffix;
if (FileUtils::getInstance()->isFileExist(alphaFile))
asyncStruct->imageAlpha.initWithImageFileThreadSafe(alphaFile);
}
// push the asyncStruct to response queue
_responseMutex.lock();
_responseQueue.push_back(asyncStruct);
_responseMutex.unlock();
}
}
崩溃发生在以下行:
_sleepCondition.wait(ul);
请帮我。提前致谢。