diff options
| author | Romain Guy <romainguy@google.com> | 2011-02-01 22:59:58 -0800 |
|---|---|---|
| committer | Romain Guy <romainguy@google.com> | 2011-02-01 23:01:43 -0800 |
| commit | 3a3133d876caf60ebff2176ad75c3dcf0259148d (patch) | |
| tree | dca8a743e3e8b99eb6b7aaddba3402c82132a9c5 /core/java/android/view/View.java | |
| parent | 849d0a37cf2ca6c6a6c2d4d4456495e32e363120 (diff) | |
Update layers based on the dirty region.
Bug #3413433
This helps Launcher when a widget updates during a scroll, or when interacting
with widgets on the workspace if layers are still turned on.
Change-Id: Ic7a42eb34f74f4ae988039754f815e2efd1d1e4f
Diffstat (limited to 'core/java/android/view/View.java')
| -rw-r--r-- | core/java/android/view/View.java | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index d3913dcb29cb..393412f0e6a0 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -73,7 +73,6 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Arrays; -import java.util.List; import java.util.WeakHashMap; /** @@ -2375,6 +2374,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Accessibility }) int mLayerType = LAYER_TYPE_NONE; Paint mLayerPaint; + Rect mLocalDirtyRect; /** * Simple constructor to use when creating a view from code. @@ -8173,7 +8173,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Accessibility } mLayerType = layerType; - mLayerPaint = mLayerType == LAYER_TYPE_NONE ? null : (paint == null ? new Paint() : paint); + final boolean layerDisabled = mLayerType == LAYER_TYPE_NONE; + mLayerPaint = layerDisabled ? null : (paint == null ? new Paint() : paint); + mLocalDirtyRect = layerDisabled ? null : new Rect(); invalidateParentCaches(); invalidate(true); @@ -8228,8 +8230,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Accessibility mAttachInfo.mHardwareCanvas = canvas; try { canvas.setViewport(width, height); - // TODO: We should pass the dirty rect - canvas.onPreDraw(null); + canvas.onPreDraw(mLocalDirtyRect); final int restoreCount = canvas.save(); @@ -8251,6 +8252,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Accessibility canvas.onPostDraw(); mHardwareLayer.end(currentCanvas); mAttachInfo.mHardwareCanvas = currentCanvas; + mLocalDirtyRect.setEmpty(); } } |
