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

Commit 3f98ef7b authored by Hiroshi Lockheimer's avatar Hiroshi Lockheimer Committed by Android Git Automerger
Browse files

am a7a257d6: Merge "Plug memory leak that happens when reusing display lists...

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

* commit 'a7a257d6':
  Plug memory leak that happens when reusing display lists Bug #7195815
parents 7b408488 a7a257d6
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() {