| 155 | } |
| 156 | |
| 157 | void SpriteFrameCache::removeUnusedSpriteFrames() |
| 158 | { |
| 159 | auto removed = false; |
| 160 | std::vector<uint64_t> toRemoveFrames; |
| 161 | |
| 162 | const auto& frames = getSpriteFrames(); |
| 163 | for (auto&& iter : frames) |
| 164 | { |
| 165 | auto* spriteFrame = iter.second; |
| 166 | if (spriteFrame->getReferenceCount() == 1) |
| 167 | { |
| 168 | toRemoveFrames.emplace_back(iter.first); |
| 169 | spriteFrame->getTexture()->removeSpriteFrameCapInset(spriteFrame); |
| 170 | AXLOGD("SpriteFrameCache: removing unused frame: {}", spriteFrame->getName()); |
| 171 | removed = true; |
| 172 | } |
| 173 | } |
| 174 | |
| 175 | if (removed) |
| 176 | { |
| 177 | eraseFrames(toRemoveFrames); |
| 178 | } |
| 179 | } |
| 180 | |
| 181 | void SpriteFrameCache::removeUnusedSpriteSheets() |
| 182 | { |