Loading libs/hwui/Layer.cpp +7 −5 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <utils/Log.h> #include "Layer.h" #include "LayerRenderer.h" #include "OpenGLRenderer.h" #include "Caches.h" Loading Loading @@ -46,14 +47,15 @@ Layer::~Layer() { if (mesh) delete mesh; if (meshIndices) delete meshIndices; if (colorFilter) Caches::getInstance().resourceCache.decrementRefcount(colorFilter); if (fbo) Caches::getInstance().fboCache.put(fbo); removeFbo(); deleteTexture(); } void Layer::freeResourcesLocked() { if (colorFilter) { Caches::getInstance().resourceCache.decrementRefcountLocked(colorFilter); colorFilter = NULL; void Layer::removeFbo() { if (fbo) { LayerRenderer::flushLayer(this); Caches::getInstance().fboCache.put(fbo); fbo = 0; } } Loading libs/hwui/Layer.h +1 −1 Original line number Diff line number Diff line Loading @@ -48,7 +48,7 @@ struct Layer { Layer(const uint32_t layerWidth, const uint32_t layerHeight); ~Layer(); void freeResourcesLocked(); void removeFbo(); /** * Sets this layer's region to a rectangle. Computes the appropriate Loading libs/hwui/LayerRenderer.cpp +1 −7 Original line number Diff line number Diff line Loading @@ -299,13 +299,6 @@ void LayerRenderer::destroyLayer(Layer* layer) { LAYER_RENDERER_LOGD("Recycling layer, %dx%d fbo = %d", layer->getWidth(), layer->getHeight(), layer->getFbo()); GLuint fbo = layer->getFbo(); if (fbo) { flushLayer(layer); Caches::getInstance().fboCache.put(fbo); layer->setFbo(0); } if (!Caches::getInstance().layerCache.put(layer)) { LAYER_RENDERER_LOGD(" Destroyed!"); Caches::getInstance().resourceCache.decrementRefcount(layer); Loading @@ -314,6 +307,7 @@ void LayerRenderer::destroyLayer(Layer* layer) { #if DEBUG_LAYER_RENDERER Caches::getInstance().layerCache.dump(); #endif layer->removeFbo(); layer->region.clear(); } } Loading libs/hwui/LayerRenderer.h +2 −2 Original line number Diff line number Diff line Loading @@ -60,6 +60,8 @@ public: ANDROID_API static void destroyLayerDeferred(Layer* layer); ANDROID_API static bool copyLayer(Layer* layer, SkBitmap* bitmap); static void flushLayer(Layer* layer); protected: virtual bool hasLayer(); virtual Region* getRegion(); Loading @@ -69,8 +71,6 @@ protected: private: void generateMesh(); static void flushLayer(Layer* layer); Layer* mLayer; }; // class LayerRenderer Loading libs/hwui/Texture.h +2 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,8 @@ struct Texture { firstFilter = true; firstWrap = true; id = 0; } void setWrap(GLenum wrap, bool bindTexture = false, bool force = false, Loading Loading
libs/hwui/Layer.cpp +7 −5 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <utils/Log.h> #include "Layer.h" #include "LayerRenderer.h" #include "OpenGLRenderer.h" #include "Caches.h" Loading Loading @@ -46,14 +47,15 @@ Layer::~Layer() { if (mesh) delete mesh; if (meshIndices) delete meshIndices; if (colorFilter) Caches::getInstance().resourceCache.decrementRefcount(colorFilter); if (fbo) Caches::getInstance().fboCache.put(fbo); removeFbo(); deleteTexture(); } void Layer::freeResourcesLocked() { if (colorFilter) { Caches::getInstance().resourceCache.decrementRefcountLocked(colorFilter); colorFilter = NULL; void Layer::removeFbo() { if (fbo) { LayerRenderer::flushLayer(this); Caches::getInstance().fboCache.put(fbo); fbo = 0; } } Loading
libs/hwui/Layer.h +1 −1 Original line number Diff line number Diff line Loading @@ -48,7 +48,7 @@ struct Layer { Layer(const uint32_t layerWidth, const uint32_t layerHeight); ~Layer(); void freeResourcesLocked(); void removeFbo(); /** * Sets this layer's region to a rectangle. Computes the appropriate Loading
libs/hwui/LayerRenderer.cpp +1 −7 Original line number Diff line number Diff line Loading @@ -299,13 +299,6 @@ void LayerRenderer::destroyLayer(Layer* layer) { LAYER_RENDERER_LOGD("Recycling layer, %dx%d fbo = %d", layer->getWidth(), layer->getHeight(), layer->getFbo()); GLuint fbo = layer->getFbo(); if (fbo) { flushLayer(layer); Caches::getInstance().fboCache.put(fbo); layer->setFbo(0); } if (!Caches::getInstance().layerCache.put(layer)) { LAYER_RENDERER_LOGD(" Destroyed!"); Caches::getInstance().resourceCache.decrementRefcount(layer); Loading @@ -314,6 +307,7 @@ void LayerRenderer::destroyLayer(Layer* layer) { #if DEBUG_LAYER_RENDERER Caches::getInstance().layerCache.dump(); #endif layer->removeFbo(); layer->region.clear(); } } Loading
libs/hwui/LayerRenderer.h +2 −2 Original line number Diff line number Diff line Loading @@ -60,6 +60,8 @@ public: ANDROID_API static void destroyLayerDeferred(Layer* layer); ANDROID_API static bool copyLayer(Layer* layer, SkBitmap* bitmap); static void flushLayer(Layer* layer); protected: virtual bool hasLayer(); virtual Region* getRegion(); Loading @@ -69,8 +71,6 @@ protected: private: void generateMesh(); static void flushLayer(Layer* layer); Layer* mLayer; }; // class LayerRenderer Loading
libs/hwui/Texture.h +2 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,8 @@ struct Texture { firstFilter = true; firstWrap = true; id = 0; } void setWrap(GLenum wrap, bool bindTexture = false, bool force = false, Loading