OSDN Git Service

Fix memory leak in HWUI
authorSangkyu Lee <geteuid@gmail.com>
Fri, 11 Dec 2015 07:05:10 +0000 (16:05 +0900)
committerChih-Wei Huang <cwhuang@linux.org.tw>
Wed, 20 Jul 2016 09:53:33 +0000 (17:53 +0800)
std::unique_ptr::release just releases the ownership of the
managed object. To delete the object, std::unique_ptr::reset
function should be called.

Change-Id: If65f74085b1fc2be3a9fffc433326e0bcdb40ff3
Tracked-On: https://jira01.devtools.intel.com/browse/OAM-19750
Reviewed-on: https://android.intel.com:443/509013

libs/hwui/Caches.cpp
libs/hwui/GammaFontRenderer.cpp
libs/hwui/Layer.cpp

index aa73d44..2763e89 100644 (file)
@@ -117,7 +117,7 @@ void Caches::initStaticProperties() {
 
 void Caches::terminate() {
     if (!mInitialized) return;
-    mRegionMesh.release();
+    mRegionMesh.reset(nullptr);
 
     fboCache.clear();
 
index 0bcd83a..070c3d7 100644 (file)
@@ -194,7 +194,7 @@ void Lookup3GammaFontRenderer::endPrecaching() {
 
 void Lookup3GammaFontRenderer::clear() {
     for (int i = 0; i < kGammaCount; i++) {
-        mRenderers[i].release();
+        mRenderers[i].reset(nullptr);
     }
 }
 
@@ -215,7 +215,7 @@ void Lookup3GammaFontRenderer::flush() {
 
     if (count <= 1 || min < 0) return;
 
-    mRenderers[min].release();
+    mRenderers[min].reset(nullptr);
 
     // Also eliminate the caches for large glyphs, as they consume significant memory
     for (int i = 0; i < kGammaCount; ++i) {
index e16865e..62eeb43 100644 (file)
@@ -251,7 +251,7 @@ void Layer::defer(const OpenGLRenderer& rootRenderer) {
 void Layer::cancelDefer() {
     renderNode = nullptr;
     deferredUpdateScheduled = false;
-    deferredList.release();
+    deferredList.reset(nullptr);
 }
 
 void Layer::flush() {