Prevent crash when a single layer is enqueued several times for updates
Bug #8504687
Change-Id: I9b01bbc4e3f37af23dfe5e68d3d03ad3d238b94a
diff --git a/libs/hwui/Layer.cpp b/libs/hwui/Layer.cpp
index 0267a66..63bb73f 100644
--- a/libs/hwui/Layer.cpp
+++ b/libs/hwui/Layer.cpp
@@ -165,6 +165,9 @@
dirtyRect.right, dirtyRect.bottom, !isBlend());
displayList->defer(deferredState, 0);
+
+ deferredUpdateScheduled = false;
+ displayList = NULL;
}
void Layer::flush() {
@@ -183,5 +186,21 @@
}
}
+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