summaryrefslogtreecommitdiff
path: root/libs/hwui/renderthread/OpenGLPipeline.cpp
diff options
context:
space:
mode:
authorsergeyv <sergeyv@google.com>2017-01-19 15:37:02 -0800
committersergeyv <sergeyv@google.com>2017-01-30 16:42:41 -0800
commit3e9999bd866fac71c72e6b484a9836c87c328a08 (patch)
tree5f4f3303c211e618bb8daed4b62f8ebfecccd530 /libs/hwui/renderthread/OpenGLPipeline.cpp
parentdf9a4f9a7c599ccd2348d429e6a6f0a5a415f780 (diff)
Explicitly destroy Layer in DeferredLayerUpdater on destroyHardwareResources()
Change-Id: I0987104eabda9a2a302b9e765213aad48f93aea4 Test: refactoring CL. Existing tests still pass bug:33753499
Diffstat (limited to 'libs/hwui/renderthread/OpenGLPipeline.cpp')
-rw-r--r--libs/hwui/renderthread/OpenGLPipeline.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/libs/hwui/renderthread/OpenGLPipeline.cpp b/libs/hwui/renderthread/OpenGLPipeline.cpp
index df40a44a16cb..8a5d9ccf759c 100644
--- a/libs/hwui/renderthread/OpenGLPipeline.cpp
+++ b/libs/hwui/renderthread/OpenGLPipeline.cpp
@@ -125,13 +125,18 @@ bool OpenGLPipeline::copyLayerInto(DeferredLayerUpdater* layer, SkBitmap* bitmap
static_cast<GlLayer&>(*layer->backingLayer()), bitmap);
}
-DeferredLayerUpdater* OpenGLPipeline::createTextureLayer() {
- mEglManager.initialize();
- GlLayer* layer = new GlLayer(mRenderThread.renderState(), 0, 0);
+static Layer* createLayer(RenderState& renderState, uint32_t layerWidth, uint32_t layerHeight,
+ SkColorFilter* colorFilter, int alpha, SkBlendMode mode, bool blend) {
+ GlLayer* layer = new GlLayer(renderState, layerWidth, layerHeight, colorFilter, alpha,
+ mode, blend);
Caches::getInstance().textureState().activateTexture(0);
layer->generateTexture();
+ return layer;
+}
- return new DeferredLayerUpdater(layer);
+DeferredLayerUpdater* OpenGLPipeline::createTextureLayer() {
+ mEglManager.initialize();
+ return new DeferredLayerUpdater(mRenderThread.renderState(), createLayer, Layer::Api::OpenGL);
}
void OpenGLPipeline::onStop() {