core: Fix dynamic texture resource management (#4337)

This commit is contained in:
Adrian Cojocaru
2026-06-23 18:39:50 +03:00
committed by GitHub
parent 0724dcf58d
commit e7a373b013
16 changed files with 120 additions and 69 deletions

View File

@@ -126,11 +126,11 @@ void GeometryTileRenderData::upload(gfx::UploadPass& uploadPass) {
assert(atlasTextures);
if (const auto& glyphDynamicTexture = layoutResult->glyphAtlas.dynamicTexture) {
glyphDynamicTexture->uploadDeferredImages();
glyphDynamicTexture->uploadDeferredImages(uploadPass);
atlasTextures->glyph = glyphDynamicTexture->getTexture();
}
if (const auto& imageDynamicTexture = layoutResult->imageAtlas.dynamicTexture) {
imageDynamicTexture->uploadDeferredImages();
imageDynamicTexture->uploadDeferredImages(uploadPass);
atlasTextures->icon = imageDynamicTexture->getTexture();
}
@@ -226,7 +226,9 @@ GeometryTile::~GeometryTile() {
if (layoutResult) {
threadPool.runOnRenderThread(
[layoutResult_{std::move(layoutResult)}, atlasTextures_{std::move(atlasTextures)}]() {});
[layoutResult_{std::move(layoutResult)}, atlasTextures_{std::move(atlasTextures)}]() {
layoutResult_->dynamicTextureAtlas->removeUnusedDynamicTextures();
});
}
}
@@ -332,7 +334,7 @@ void GeometryTile::setShowCollisionBoxes(const bool showCollisionBoxes_) {
}
}
void GeometryTile::onLayout(std::shared_ptr<LayoutResult> result, const uint64_t resultCorrelationID) {
void GeometryTile::onLayout(std::shared_ptr<LayoutResult>&& result, const uint64_t resultCorrelationID) {
MLN_TRACE_FUNC();
loaded = true;