summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2011-03-01 14:53:48 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-03-01 14:53:48 -0800
commite6c524022deb665439a442ab8b66f2917ca62ca2 (patch)
treecec4e4c0ac30a8684cf8d8fb3d711e3864de8af4 /core
parent5a6f9faf5d94792a61557937f11e8b6b289ea03a (diff)
parentd643bb56fdf21973ea75984f0816b7dc024698df (diff)
downloadframeworks_base-e6c524022deb665439a442ab8b66f2917ca62ca2.zip
frameworks_base-e6c524022deb665439a442ab8b66f2917ca62ca2.tar.gz
frameworks_base-e6c524022deb665439a442ab8b66f2917ca62ca2.tar.bz2
Merge "Correctly mark layers dirty when drawing WebView."
Diffstat (limited to 'core')
-rw-r--r--core/java/android/view/ViewGroup.java25
1 files changed, 15 insertions, 10 deletions
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index 5c06151..7ecf281 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -2447,21 +2447,26 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
}
cache = child.getDrawingCache(true);
} else {
- if (layerType == LAYER_TYPE_SOFTWARE) {
- child.buildDrawingCache(true);
- cache = child.getDrawingCache(true);
- } else if (layerType == LAYER_TYPE_NONE) {
- // Delay getting the display list until animation-driven alpha values are
- // set up and possibly passed on to the view
- hasDisplayList = child.canHaveDisplayList();
+ switch (layerType) {
+ case LAYER_TYPE_SOFTWARE:
+ child.buildDrawingCache(true);
+ cache = child.getDrawingCache(true);
+ break;
+ case LAYER_TYPE_NONE:
+ // Delay getting the display list until animation-driven alpha values are
+ // set up and possibly passed on to the view
+ hasDisplayList = child.canHaveDisplayList();
+ break;
}
}
}
final boolean hasNoCache = cache == null || hasDisplayList;
+ final boolean offsetForScroll = cache == null && !hasDisplayList &&
+ layerType != LAYER_TYPE_HARDWARE;
final int restoreTo = canvas.save();
- if (cache == null && !hasDisplayList) {
+ if (offsetForScroll) {
canvas.translate(cl - sx, ct - sy);
} else {
canvas.translate(cl, ct);
@@ -2477,7 +2482,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
int transX = 0;
int transY = 0;
- if (cache == null && !hasDisplayList) {
+ if (offsetForScroll) {
transX = -sx;
transY = -sy;
}
@@ -2532,7 +2537,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
}
if ((flags & FLAG_CLIP_CHILDREN) == FLAG_CLIP_CHILDREN) {
- if (cache == null && !hasDisplayList) {
+ if (offsetForScroll) {
canvas.clipRect(sx, sy, sx + (cr - cl), sy + (cb - ct));
} else {
if (!scalingRequired || cache == null) {