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

Commit 27454a42 authored by Romain Guy's avatar Romain Guy
Browse files

Collapse sucessive calls to restoreToCount() in display lists.

Change-Id: Icb3d3dc2c579436d375269a9cb0b821a931c5a79
parent 4cf6e2f3
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -473,6 +473,12 @@ void DisplayListRenderer::prepare(bool opaque) {
            SkCanvas::kMatrix_SaveFlag | SkCanvas::kClip_SaveFlag);
    mSaveCount = 1;
    mSnapshot->setClip(0.0f, 0.0f, mWidth, mHeight);
    mRestoreSaveCount = -1;
}

void DisplayListRenderer::finish() {
    insertRestoreToCount();
    OpenGLRenderer::finish();
}

void DisplayListRenderer::acquireContext() {
@@ -497,8 +503,7 @@ void DisplayListRenderer::restore() {
}

void DisplayListRenderer::restoreToCount(int saveCount) {
    addOp(DisplayList::RestoreToCount);
    addInt(saveCount);
    mRestoreSaveCount = saveCount;
    OpenGLRenderer::restoreToCount(saveCount);
}

+12 −0
Original line number Diff line number Diff line
@@ -238,6 +238,7 @@ public:

    void setViewport(int width, int height);
    void prepare(bool opaque);
    void finish();

    void acquireContext();
    void releaseContext();
@@ -318,7 +319,16 @@ public:
    }

private:
    void insertRestoreToCount() {
        if (mRestoreSaveCount >= 0) {
            mWriter.writeInt(DisplayList::RestoreToCount);
            addInt(mRestoreSaveCount);
            mRestoreSaveCount = -1;
        }
    }

    inline void addOp(DisplayList::Op drawOp) {
        insertRestoreToCount();
        mWriter.writeInt(drawOp);
    }

@@ -461,6 +471,8 @@ private:

    DisplayList *mDisplayList;

    int mRestoreSaveCount;

    friend class DisplayList;

}; // class DisplayListRenderer