diff options
| author | 2012-09-25 15:49:03 -0700 | |
|---|---|---|
| committer | 2012-09-25 15:49:03 -0700 | |
| commit | 8a1374946a928fcba7495c87ff6adda327fdfb9f (patch) | |
| tree | ab6b1d092aec1b19751e820c3e18a10c21a40759 /libs/hwui/Layer.cpp | |
| parent | 1ab8a08a9b85aa62045a6a78fd93859382c88b0f (diff) | |
Deleting objects on the wrong thread is a silly idea
Bug #7195815
Turns out that multi-threading is hard.
Change-Id: Ib0b4bd6dc3caea27f7ced22cbb363bb955fe58ab
Diffstat (limited to 'libs/hwui/Layer.cpp')
| -rw-r--r-- | libs/hwui/Layer.cpp | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/libs/hwui/Layer.cpp b/libs/hwui/Layer.cpp index fb525ee428ac..cd2e57131c9f 100644 --- a/libs/hwui/Layer.cpp +++ b/libs/hwui/Layer.cpp @@ -19,6 +19,7 @@ #include <utils/Log.h> #include "Layer.h" +#include "LayerRenderer.h" #include "OpenGLRenderer.h" #include "Caches.h" @@ -46,15 +47,12 @@ Layer::~Layer() { if (mesh) delete mesh; if (meshIndices) delete meshIndices; if (colorFilter) Caches::getInstance().resourceCache.decrementRefcount(colorFilter); - if (fbo) Caches::getInstance().fboCache.put(fbo); - deleteTexture(); -} - -void Layer::freeResourcesLocked() { - if (colorFilter) { - Caches::getInstance().resourceCache.decrementRefcountLocked(colorFilter); - colorFilter = NULL; + if (fbo) { + LayerRenderer::flushLayer(this); + Caches::getInstance().fboCache.put(fbo); + fbo = 0; } + deleteTexture(); } void Layer::setPaint(SkPaint* paint) { @@ -71,7 +69,5 @@ void Layer::setColorFilter(SkiaColorFilter* filter) { } } - - }; // namespace uirenderer }; // namespace android |