Loading libs/hwui/Caches.cpp +17 −9 Original line number Diff line number Diff line Loading @@ -227,21 +227,29 @@ void Caches::clearGarbage() { textureCache.clearGarbage(); pathCache.clearGarbage(); Vector<DisplayList*> displayLists; Vector<Layer*> layers; { // scope for the lock Mutex::Autolock _l(mGarbageLock); displayLists = mDisplayListGarbage; layers = mLayerGarbage; mDisplayListGarbage.clear(); mLayerGarbage.clear(); } size_t count = mLayerGarbage.size(); size_t count = displayLists.size(); for (size_t i = 0; i < count; i++) { Layer* layer = mLayerGarbage.itemAt(i); delete layer; DisplayList* displayList = displayLists.itemAt(i); delete displayList; } mLayerGarbage.clear(); count = mDisplayListGarbage.size(); count = layers.size(); for (size_t i = 0; i < count; i++) { DisplayList* displayList = mDisplayListGarbage.itemAt(i); delete displayList; Layer* layer = layers.itemAt(i); delete layer; } mDisplayListGarbage.clear(); layers.clear(); } void Caches::deleteLayerDeferred(Layer* layer) { Loading Loading
libs/hwui/Caches.cpp +17 −9 Original line number Diff line number Diff line Loading @@ -227,21 +227,29 @@ void Caches::clearGarbage() { textureCache.clearGarbage(); pathCache.clearGarbage(); Vector<DisplayList*> displayLists; Vector<Layer*> layers; { // scope for the lock Mutex::Autolock _l(mGarbageLock); displayLists = mDisplayListGarbage; layers = mLayerGarbage; mDisplayListGarbage.clear(); mLayerGarbage.clear(); } size_t count = mLayerGarbage.size(); size_t count = displayLists.size(); for (size_t i = 0; i < count; i++) { Layer* layer = mLayerGarbage.itemAt(i); delete layer; DisplayList* displayList = displayLists.itemAt(i); delete displayList; } mLayerGarbage.clear(); count = mDisplayListGarbage.size(); count = layers.size(); for (size_t i = 0; i < count; i++) { DisplayList* displayList = mDisplayListGarbage.itemAt(i); delete displayList; Layer* layer = layers.itemAt(i); delete layer; } mDisplayListGarbage.clear(); layers.clear(); } void Caches::deleteLayerDeferred(Layer* layer) { Loading