From 668f0e38ef0277d55d3118af37e17b8c435df85c Mon Sep 17 00:00:00 2001 From: John Reck Date: Wed, 26 Mar 2014 15:10:40 -0700 Subject: Async drawing! Change-Id: I7e728356f58af88174328a8c0b90d27b128bfe01 --- libs/hwui/Layer.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'libs/hwui/Layer.cpp') diff --git a/libs/hwui/Layer.cpp b/libs/hwui/Layer.cpp index bd9bfe95c057..4457c61bd736 100644 --- a/libs/hwui/Layer.cpp +++ b/libs/hwui/Layer.cpp @@ -58,6 +58,7 @@ Layer::~Layer() { delete[] mesh; delete deferredList; + delete renderer; } uint32_t Layer::computeIdealWidth(uint32_t layerWidth) { @@ -68,6 +69,13 @@ uint32_t Layer::computeIdealHeight(uint32_t layerHeight) { return uint32_t(ceilf(layerHeight / float(LAYER_SIZE)) * LAYER_SIZE); } +void Layer::requireRenderer() { + if (!renderer) { + renderer = new LayerRenderer(this); + renderer->initProperties(); + } +} + bool Layer::resize(const uint32_t width, const uint32_t height) { uint32_t desiredWidth = computeIdealWidth(width); uint32_t desiredHeight = computeIdealWidth(height); @@ -207,7 +215,6 @@ void Layer::defer() { } void Layer::cancelDefer() { - renderer = NULL; displayList = NULL; deferredUpdateScheduled = false; if (deferredList) { @@ -226,7 +233,6 @@ void Layer::flush() { deferredList->flush(*renderer, dirtyRect); renderer->finish(); - renderer = NULL; dirtyRect.setEmpty(); displayList = NULL; @@ -241,7 +247,6 @@ void Layer::render() { renderer->drawDisplayList(displayList, dirtyRect, RenderNode::kReplayFlag_ClipChildren); renderer->finish(); - renderer = NULL; dirtyRect.setEmpty(); -- cgit v1.2.3-59-g8ed1b