Merge "Collapse sucessive calls to restoreToCount() in display lists." into honeycomb

This commit is contained in:
Romain Guy
2011-01-23 11:59:39 -08:00
committed by Android (Google) Code Review
2 changed files with 19 additions and 2 deletions

View File

@@ -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);
}

View File

@@ -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