Merge "Save/restore display lists' canvas properly"

This commit is contained in:
Romain Guy
2011-09-08 15:06:05 -07:00
committed by Android (Google) Code Review

View File

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