diff options
author | sergeyv <sergeyv@google.com> | 2017-01-19 15:37:02 -0800 |
---|---|---|
committer | sergeyv <sergeyv@google.com> | 2017-01-30 16:42:41 -0800 |
commit | 3e9999bd866fac71c72e6b484a9836c87c328a08 (patch) | |
tree | 5f4f3303c211e618bb8daed4b62f8ebfecccd530 /libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp | |
parent | df9a4f9a7c599ccd2348d429e6a6f0a5a415f780 (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/pipeline/skia/SkiaOpenGLPipeline.cpp')
-rw-r--r-- | libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp b/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp index 65a1dc38ab8e..de80ee3ca229 100644 --- a/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp +++ b/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp @@ -135,11 +135,17 @@ bool SkiaOpenGLPipeline::copyLayerInto(DeferredLayerUpdater* deferredLayer, SkBi return LayerDrawable::DrawLayer(mRenderThread.getGrContext(), &canvas, layer); } +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); + layer->generateTexture(); + return layer; +} + DeferredLayerUpdater* SkiaOpenGLPipeline::createTextureLayer() { mEglManager.initialize(); - GlLayer* layer = new GlLayer(mRenderThread.renderState(), 0, 0); - layer->generateTexture(); - return new DeferredLayerUpdater(layer); + return new DeferredLayerUpdater(mRenderThread.renderState(), createLayer, Layer::Api::OpenGL); } void SkiaOpenGLPipeline::onStop() { |