summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libs/hwui/DisplayListRenderer.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/libs/hwui/DisplayListRenderer.cpp b/libs/hwui/DisplayListRenderer.cpp
index 6aff8d4..6ca70a4 100644
--- a/libs/hwui/DisplayListRenderer.cpp
+++ b/libs/hwui/DisplayListRenderer.cpp
@@ -143,6 +143,7 @@ void DisplayList::destroyDisplayListDeferred(DisplayList* displayList) {
void DisplayList::clearResources() {
sk_free((void*) mReader.base());
+ mReader.setMemory(NULL, 0);
delete mTransformMatrix;
delete mTransformCamera;
@@ -216,19 +217,19 @@ void DisplayList::clearResources() {
void DisplayList::initFromDisplayListRenderer(const DisplayListRenderer& recorder, bool reusing) {
const SkWriter32& writer = recorder.writeStream();
- init();
-
- if (writer.size() == 0) {
- mFunctorCount = 0;
- return;
- }
if (reusing) {
// re-using display list - clear out previous allocations
clearResources();
}
+
+ init();
initProperties();
+ if (writer.size() == 0) {
+ return;
+ }
+
mSize = writer.size();
void* buffer = sk_malloc_throw(mSize);
writer.flatten(buffer);
@@ -301,6 +302,7 @@ void DisplayList::initFromDisplayListRenderer(const DisplayListRenderer& recorde
void DisplayList::init() {
mSize = 0;
mIsRenderable = true;
+ mFunctorCount = 0;
}
size_t DisplayList::getSize() {