diff options
| author | 2013-03-29 12:37:16 -0700 | |
|---|---|---|
| committer | 2013-03-29 12:37:16 -0700 | |
| commit | 02b49b70ede0b9eb760ff334823aee1d9520ed85 (patch) | |
| tree | 3d55433752c547beb594edec21d56ce1b3080889 /libs/hwui/Layer.cpp | |
| parent | 964a6a7e209b0db262c827721ae5fde3f98ca763 (diff) | |
Prevent crash when a single layer is enqueued several times for updates
Bug #8504687
Change-Id: I9b01bbc4e3f37af23dfe5e68d3d03ad3d238b94a
Diffstat (limited to 'libs/hwui/Layer.cpp')
| -rw-r--r-- | libs/hwui/Layer.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/libs/hwui/Layer.cpp b/libs/hwui/Layer.cpp index 0267a66a39a3..63bb73f12775 100644 --- a/libs/hwui/Layer.cpp +++ b/libs/hwui/Layer.cpp @@ -165,6 +165,9 @@ void Layer::defer() { dirtyRect.right, dirtyRect.bottom, !isBlend()); displayList->defer(deferredState, 0); + + deferredUpdateScheduled = false; + displayList = NULL; } void Layer::flush() { @@ -183,5 +186,21 @@ void Layer::flush() { } } +void Layer::render() { + renderer->setViewport(layer.getWidth(), layer.getHeight()); + renderer->prepareDirty(dirtyRect.left, dirtyRect.top, dirtyRect.right, dirtyRect.bottom, + !isBlend()); + + renderer->drawDisplayList(displayList, dirtyRect, DisplayList::kReplayFlag_ClipChildren); + + renderer->finish(); + renderer = NULL; + + dirtyRect.setEmpty(); + + deferredUpdateScheduled = false; + displayList = NULL; +} + }; // namespace uirenderer }; // namespace android |