From e080af37544f5d7d0cc8140289ac96dd21a8742d Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Thu, 8 Sep 2011 15:03:39 -0700 Subject: [PATCH] Save/restore display lists' canvas properly Change-Id: Ic016f0215f9fe5c67af98f059ecce4ed94994810 --- core/java/android/view/View.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index fd60813f923eb..4a9c5bd45e94c 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -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();