diff options
author | Chet Haase <chet@google.com> | 2012-10-23 15:51:24 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2012-10-23 15:51:24 -0700 |
commit | 4a82a0fc09f4743b59b5de483329fb76e60aab07 (patch) | |
tree | 6ddc08eef33139d39b2d9934a0c666fa15fd6279 | |
parent | be815669d1c41a95f79222aaa7caa4462bddfb2d (diff) | |
parent | f5fa64f24b0ee6aa53ac2803590e8729122c445b (diff) | |
download | frameworks_base-4a82a0fc09f4743b59b5de483329fb76e60aab07.zip frameworks_base-4a82a0fc09f4743b59b5de483329fb76e60aab07.tar.gz frameworks_base-4a82a0fc09f4743b59b5de483329fb76e60aab07.tar.bz2 |
am f5fa64f2: am fbba753f: Merge "Handle offscreen animations correctly" into jb-mr1-dev
* commit 'f5fa64f24b0ee6aa53ac2803590e8729122c445b':
Handle offscreen animations correctly
-rw-r--r-- | core/java/android/view/ViewRootImpl.java | 14 | ||||
-rw-r--r-- | libs/hwui/DisplayListRenderer.cpp | 19 |
2 files changed, 17 insertions, 16 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 73b84ce..95576e9 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -861,7 +861,7 @@ public final class ViewRootImpl implements ViewParent, if (dirty == null) { invalidate(); return null; - } else if (dirty.isEmpty()) { + } else if (dirty.isEmpty() && !mIsAnimating) { return null; } @@ -890,14 +890,14 @@ public final class ViewRootImpl implements ViewParent, // Intersect with the bounds of the window to skip // updates that lie outside of the visible region final float appScale = mAttachInfo.mApplicationScale; - if (localDirty.intersect(0, 0, - (int) (mWidth * appScale + 0.5f), (int) (mHeight * appScale + 0.5f))) { - if (!mWillDrawSoon) { - scheduleTraversals(); - } - } else { + final boolean intersected = localDirty.intersect(0, 0, + (int) (mWidth * appScale + 0.5f), (int) (mHeight * appScale + 0.5f)); + if (!intersected) { localDirty.setEmpty(); } + if (!mWillDrawSoon && (intersected || mIsAnimating)) { + scheduleTraversals(); + } return null; } diff --git a/libs/hwui/DisplayListRenderer.cpp b/libs/hwui/DisplayListRenderer.cpp index 81e68bd..7a38b40 100644 --- a/libs/hwui/DisplayListRenderer.cpp +++ b/libs/hwui/DisplayListRenderer.cpp @@ -763,16 +763,17 @@ void DisplayList::outputViewProperties(OpenGLRenderer& renderer, char* indent) { } } if (mAlpha < 1 && !mCaching) { - // TODO: should be able to store the size of a DL at record time and not - // have to pass it into this call. In fact, this information might be in the - // location/size info that we store with the new native transform data. - int flags = SkCanvas::kHasAlphaLayer_SaveFlag; - if (mClipChildren) { - flags |= SkCanvas::kClipToLayer_SaveFlag; + if (!mHasOverlappingRendering) { + ALOGD("%s%s %.2f", indent, "SetAlpha", mAlpha); + } else { + int flags = SkCanvas::kHasAlphaLayer_SaveFlag; + if (mClipChildren) { + flags |= SkCanvas::kClipToLayer_SaveFlag; + } + ALOGD("%s%s %.2f, %.2f, %.2f, %.2f, %d, 0x%x", indent, "SaveLayerAlpha", + (float) 0, (float) 0, (float) mRight - mLeft, (float) mBottom - mTop, + mMultipliedAlpha, flags); } - ALOGD("%s%s %.2f, %.2f, %.2f, %.2f, %d, 0x%x", indent, "SaveLayerAlpha", - (float) 0, (float) 0, (float) mRight - mLeft, (float) mBottom - mTop, - mMultipliedAlpha, flags); } if (mClipChildren) { ALOGD("%s%s %.2f, %.2f, %.2f, %.2f", indent, "ClipRect", 0.0f, 0.0f, |