关于CCTextureCache的异步加载线程函数有一处看不太明白

void TextureCache::loadImage()
{

auto it = _textures.find(asyncStruct->filename);
if( it == _textures.end() )
{
_imageInfoMutex.lock();
ImageInfo imageInfo;
size_t pos = 0;
size_t infoSize = _imageInfoQueue->size();
for (; pos < infoSize; pos++)
{
imageInfo = (
_imageInfoQueue)pos];
if(imageInfo->asyncStruct->filename.compare(asyncStruct->filename))
break;
}
_imageInfoMutex.unlock();
if(infoSize == 0 || pos < infoSize)
generateImage = true;

    }


}

其中
if(imageInfo->asyncStruct->filename.compare(asyncStruct->filename))
break;
不是很明白其用意:
遍历_imageInfoQueue,一旦遇到与当前加载请求文件名不同的,则标记generateImage为true(需要生成Image)?为什么是这样的?
_imageInfoQueue应该是一个已经从文件读取至Image待主线程处理(转为纹理)的请求结果队列吧,
难道要_imageInfoQueue中所有请求结果的文件名都和当前加载请求文件名相同时,才不会生成Image?

我觉得应该改为:
if(!imageInfo->asyncStruct->filename.compare(asyncStruct->filename)) // 已存在于请求结果列表中
break;
以及下面:
if(infoSize == 0 || pos >= infoSize) // 未在请求结果列表里找到
generateImage = true;

下了最新版的源码 发现已修复