diff options
| -rw-r--r-- | libs/hwui/DisplayListRenderer.cpp | 14 |
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() { |
