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