Skip to content

关于Slot::__disposeDisplay的函数参数isRelease的疑问 #183

@scutXu

Description

@scutXu

//Slot::_onClear中的一段代码

std::vector<std::pair<void*, DisplayType>> disposeDisplayList;
for (const auto& pair : this->_displayList)
{
    if (
        pair.first != nullptr && pair.first != _rawDisplay && pair.first != _meshDisplay &&
        std::find(disposeDisplayList.cbegin(), disposeDisplayList.cend(), pair) == disposeDisplayList.cend()
    )
    {
        disposeDisplayList.push_back(pair);
    }
}

for (const auto& pair : disposeDisplayList)
{
    if (pair.second == DisplayType::Armature)
    {
        static_cast<Armature*>(pair.first)->returnToPool();
    }
    else
    {
        _disposeDisplay(pair.first, true);
    }
}

if (_meshDisplay && _meshDisplay != _rawDisplay) 
{
    _disposeDisplay(_meshDisplay, false);
}

if (_rawDisplay) {
    _disposeDisplay(_rawDisplay, false);
}

代码相比于5.0版本增加了这个参数,但是这个参数是否还未起作用呢?我看CCSlot中的方法实现并没有根据这个参数进行一些逻辑判断。如果我没猜错的话,这个修改的本意是将上面代码中pair.first != _rawDisplay && pair.first != _meshDisplay 去掉,并且CCSlot中根据isRelease去判断是否释放该display对象

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions