Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a7a257d6 authored by Hiroshi Lockheimer's avatar Hiroshi Lockheimer Committed by Android (Google) Code Review
Browse files

Merge "Plug memory leak that happens when reusing display lists Bug #7195815" into jb-mr1-dev

parents 448f6e1e 034de6b1
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -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() {