Skip to content

Commit 499c347

Browse files
committed
Fix android VolatileTexture memory leak when addImage(img,k,fmt)
1 parent 63c0dcb commit 499c347

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

core/renderer/TextureCache.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -531,7 +531,7 @@ Texture2D* TextureCache::addImage(Image* image, std::string_view key, PixelForma
531531
if (it != _textures.end())
532532
{
533533
texture = it->second;
534-
break;
534+
return texture;
535535
}
536536

537537
texture = new Texture2D();
@@ -850,10 +850,14 @@ void VolatileTextureMgr::addImage(Texture2D* tt, Image* image)
850850
return;
851851

852852
VolatileTexture* vt = findVolotileTexture(tt);
853-
image->retain();
854-
vt->_uiImage = image;
855-
vt->_cashedImageType = VolatileTexture::kImage;
856-
vt->_pixelFormat = tt->getPixelFormat();
853+
854+
if(vt->_uiImage != image) {
855+
AX_SAFE_RELEASE(vt->_uiImage);
856+
image->retain();
857+
vt->_uiImage = image;
858+
vt->_cashedImageType = VolatileTexture::kImage;
859+
vt->_pixelFormat = tt->getPixelFormat();
860+
}
857861
}
858862

859863
VolatileTexture* VolatileTextureMgr::findVolotileTexture(Texture2D* tt)

0 commit comments

Comments
 (0)