From ca0608af3ce04121fc5889f93b161cbad0f7e620 Mon Sep 17 00:00:00 2001 From: John Reck Date: Tue, 17 Jun 2014 14:23:31 -0700 Subject: [PATCH] Fix setLayerType Bug: 15682142 mLayerType/getLayerType() can modify the display list, so invalidate() is necessary Change-Id: I1d323c1bd4356b31159b51d4299de099e53a0389 --- core/java/android/view/View.java | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index b9e56f36b5430..d780c880660d8 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -13432,8 +13432,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback, // Destroy any previous software drawing cache if needed if (mLayerType == LAYER_TYPE_SOFTWARE) { destroyDrawingCache(); - invalidateParentCaches(); - invalidate(true); } mLayerType = layerType; @@ -13441,13 +13439,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback, mLayerPaint = layerDisabled ? null : (paint == null ? new Paint() : paint); mRenderNode.setLayerPaint(mLayerPaint); - if (mLayerType == LAYER_TYPE_SOFTWARE) { - // LAYER_TYPE_SOFTWARE is handled by View:draw(), so need to invalidate() - invalidateParentCaches(); - invalidate(true); - } else { - invalidateViewProperty(false, false); - } + // draw() behaves differently if we are on a layer, so we need to + // invalidate() here + invalidateParentCaches(); + invalidate(true); } /**