summaryrefslogtreecommitdiff
path: root/libs/hwui/Layer.cpp
diff options
context:
space:
mode:
author Romain Guy <romainguy@google.com> 2013-03-29 12:37:16 -0700
committer Romain Guy <romainguy@google.com> 2013-03-29 12:37:16 -0700
commit02b49b70ede0b9eb760ff334823aee1d9520ed85 (patch)
tree3d55433752c547beb594edec21d56ce1b3080889 /libs/hwui/Layer.cpp
parent964a6a7e209b0db262c827721ae5fde3f98ca763 (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.cpp19
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