am e38ba4ac: Fix gmail crossfade artifacts.

* commit 'e38ba4acbe6f1536997ffb98d662fc3eff07add8':
  Fix gmail crossfade artifacts.
This commit is contained in:
Chet Haase
2011-01-27 01:30:09 -08:00
committed by Android Git Automerger

View File

@@ -2263,13 +2263,14 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
boolean scalingRequired = false;
boolean caching;
int layerType = child.getLayerType();
final boolean hardwareAccelerated = canvas.isHardwareAccelerated();
if ((flags & FLAG_CHILDREN_DRAWN_WITH_CACHE) == FLAG_CHILDREN_DRAWN_WITH_CACHE ||
(flags & FLAG_ALWAYS_DRAWN_WITH_CACHE) == FLAG_ALWAYS_DRAWN_WITH_CACHE) {
caching = true;
if (mAttachInfo != null) scalingRequired = mAttachInfo.mScalingRequired;
} else {
caching = (layerType != LAYER_TYPE_NONE) || canvas.isHardwareAccelerated();
caching = (layerType != LAYER_TYPE_NONE) || hardwareAccelerated;
}
if (a != null) {
@@ -2351,7 +2352,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
return more;
}
if (canvas.isHardwareAccelerated()) {
if (hardwareAccelerated) {
// Clear INVALIDATED flag to allow invalidation to occur during rendering, but
// retain the flag's value temporarily in the mRecreateDisplayList flag
child.mRecreateDisplayList = (child.mPrivateFlags & INVALIDATED) == INVALIDATED;
@@ -2367,7 +2368,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
Bitmap cache = null;
boolean hasDisplayList = false;
if (caching) {
if (!canvas.isHardwareAccelerated()) {
if (!hardwareAccelerated) {
if (layerType != LAYER_TYPE_NONE) {
layerType = LAYER_TYPE_SOFTWARE;
child.buildDrawingCache(true);
@@ -2506,11 +2507,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
}
} else {
child.mPrivateFlags &= ~DIRTY_MASK;
// Skip drawing the display list into ours if we were just refreshing
// it's content; we already have a reference to it in our display list
if (mRecreateDisplayList || mLayerType != LAYER_TYPE_NONE) {
((HardwareCanvas) canvas).drawDisplayList(displayList);
}
((HardwareCanvas) canvas).drawDisplayList(displayList);
}
}
} else if (cache != null) {
@@ -2536,13 +2533,13 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
canvas.restoreToCount(restoreTo);
if (a != null && !more) {
if (!canvas.isHardwareAccelerated() && !a.getFillAfter()) {
if (!hardwareAccelerated && !a.getFillAfter()) {
child.onSetAlpha(255);
}
finishAnimatingView(child, a);
}
if (more && canvas.isHardwareAccelerated()) {
if (more && hardwareAccelerated) {
// invalidation is the trigger to recreate display lists, so if we're using
// display lists to render, force an invalidate to allow the animation to
// continue drawing another frame