Merge "Handle offscreen animations correctly" into jb-mr1-dev
This commit is contained in:
@@ -859,7 +859,7 @@ public final class ViewRootImpl implements ViewParent,
|
|||||||
if (dirty == null) {
|
if (dirty == null) {
|
||||||
invalidate();
|
invalidate();
|
||||||
return null;
|
return null;
|
||||||
} else if (dirty.isEmpty()) {
|
} else if (dirty.isEmpty() && !mIsAnimating) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -888,14 +888,14 @@ public final class ViewRootImpl implements ViewParent,
|
|||||||
// Intersect with the bounds of the window to skip
|
// Intersect with the bounds of the window to skip
|
||||||
// updates that lie outside of the visible region
|
// updates that lie outside of the visible region
|
||||||
final float appScale = mAttachInfo.mApplicationScale;
|
final float appScale = mAttachInfo.mApplicationScale;
|
||||||
if (localDirty.intersect(0, 0,
|
final boolean intersected = localDirty.intersect(0, 0,
|
||||||
(int) (mWidth * appScale + 0.5f), (int) (mHeight * appScale + 0.5f))) {
|
(int) (mWidth * appScale + 0.5f), (int) (mHeight * appScale + 0.5f));
|
||||||
if (!mWillDrawSoon) {
|
if (!intersected) {
|
||||||
scheduleTraversals();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
localDirty.setEmpty();
|
localDirty.setEmpty();
|
||||||
}
|
}
|
||||||
|
if (!mWillDrawSoon && (intersected || mIsAnimating)) {
|
||||||
|
scheduleTraversals();
|
||||||
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -763,9 +763,9 @@ void DisplayList::outputViewProperties(OpenGLRenderer& renderer, char* indent) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (mAlpha < 1 && !mCaching) {
|
if (mAlpha < 1 && !mCaching) {
|
||||||
// TODO: should be able to store the size of a DL at record time and not
|
if (!mHasOverlappingRendering) {
|
||||||
// have to pass it into this call. In fact, this information might be in the
|
ALOGD("%s%s %.2f", indent, "SetAlpha", mAlpha);
|
||||||
// location/size info that we store with the new native transform data.
|
} else {
|
||||||
int flags = SkCanvas::kHasAlphaLayer_SaveFlag;
|
int flags = SkCanvas::kHasAlphaLayer_SaveFlag;
|
||||||
if (mClipChildren) {
|
if (mClipChildren) {
|
||||||
flags |= SkCanvas::kClipToLayer_SaveFlag;
|
flags |= SkCanvas::kClipToLayer_SaveFlag;
|
||||||
@@ -774,6 +774,7 @@ void DisplayList::outputViewProperties(OpenGLRenderer& renderer, char* indent) {
|
|||||||
(float) 0, (float) 0, (float) mRight - mLeft, (float) mBottom - mTop,
|
(float) 0, (float) 0, (float) mRight - mLeft, (float) mBottom - mTop,
|
||||||
mMultipliedAlpha, flags);
|
mMultipliedAlpha, flags);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (mClipChildren) {
|
if (mClipChildren) {
|
||||||
ALOGD("%s%s %.2f, %.2f, %.2f, %.2f", indent, "ClipRect", 0.0f, 0.0f,
|
ALOGD("%s%s %.2f, %.2f, %.2f, %.2f", indent, "ClipRect", 0.0f, 0.0f,
|
||||||
(float) mRight - mLeft, (float) mBottom - mTop);
|
(float) mRight - mLeft, (float) mBottom - mTop);
|
||||||
|
|||||||
Reference in New Issue
Block a user