Save/restore display lists' canvas properly

Change-Id: Ic016f0215f9fe5c67af98f059ecce4ed94994810
This commit is contained in:
Romain Guy
2011-09-08 15:03:39 -07:00
parent 9f443fb6e7
commit e080af3754

View File

@@ -9995,6 +9995,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
}
final HardwareCanvas canvas = mDisplayList.start();
int restoreCount = 0;
try {
int width = mRight - mLeft;
int height = mBottom - mTop;
@@ -10004,6 +10005,8 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
canvas.onPreDraw(null);
computeScroll();
restoreCount = canvas.save();
canvas.translate(-mScrollX, -mScrollY);
mPrivateFlags |= DRAWN | DRAWING_CACHE_VALID;
mPrivateFlags &= ~DIRTY_MASK;
@@ -10015,6 +10018,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
draw(canvas);
}
} finally {
canvas.restoreToCount(restoreCount);
canvas.onPostDraw();
mDisplayList.end();