diff options
author | Romain Guy <romainguy@google.com> | 2013-04-04 15:26:04 -0700 |
---|---|---|
committer | Romain Guy <romainguy@google.com> | 2013-04-04 15:29:09 -0700 |
commit | e55945e219dbf4664683a757c5a9d462c98f2e19 (patch) | |
tree | 3187edad1c2d105b17b5daac590f4c1797f5fe08 /core/java/android/view/ViewRootImpl.java | |
parent | 964a6a7e209b0db262c827721ae5fde3f98ca763 (diff) | |
download | frameworks_base-e55945e219dbf4664683a757c5a9d462c98f2e19.zip frameworks_base-e55945e219dbf4664683a757c5a9d462c98f2e19.tar.gz frameworks_base-e55945e219dbf4664683a757c5a9d462c98f2e19.tar.bz2 |
Reduce the size of dirty invalidates
Remove remnants from times long gone. We don't need to redraw the
union of the previous frame's dirty region and the new dirty
region.
Change-Id: I9fb96f99a6a72c2233f9ca563cf6432a42b2b65b
Diffstat (limited to 'core/java/android/view/ViewRootImpl.java')
-rw-r--r-- | core/java/android/view/ViewRootImpl.java | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 7b34ce1..b72a30b 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -197,7 +197,6 @@ public final class ViewRootImpl implements ViewParent, int mHeight; Rect mDirty; final Rect mCurrentDirty = new Rect(); - final Rect mPreviousDirty = new Rect(); boolean mIsAnimating; CompatibilityInfo.Translator mTranslator; @@ -767,10 +766,11 @@ public final class ViewRootImpl implements ViewParent, final boolean translucent = attrs.format != PixelFormat.OPAQUE; mAttachInfo.mHardwareRenderer = HardwareRenderer.createGlRenderer(2, translucent); - mAttachInfo.mHardwareRenderer.setName(attrs.getTitle().toString()); - mAttachInfo.mHardwareAccelerated = mAttachInfo.mHardwareAccelerationRequested - = mAttachInfo.mHardwareRenderer != null; - + if (mAttachInfo.mHardwareRenderer != null) { + mAttachInfo.mHardwareRenderer.setName(attrs.getTitle().toString()); + mAttachInfo.mHardwareAccelerated = + mAttachInfo.mHardwareAccelerationRequested = true; + } } else if (fakeHwAccelerated) { // The window had wanted to use hardware acceleration, but this // is not allowed in its process. By setting this flag, it can @@ -2385,14 +2385,10 @@ public final class ViewRootImpl implements ViewParent, mResizeAlpha = resizeAlpha; mCurrentDirty.set(dirty); - mCurrentDirty.union(mPreviousDirty); - mPreviousDirty.set(dirty); dirty.setEmpty(); - if (attachInfo.mHardwareRenderer.draw(mView, attachInfo, this, - animating ? null : mCurrentDirty)) { - mPreviousDirty.set(0, 0, mWidth, mHeight); - } + attachInfo.mHardwareRenderer.draw(mView, attachInfo, this, + animating ? null : mCurrentDirty); } else { // If we get here with a disabled & requested hardware renderer, something went // wrong (an invalidate posted right before we destroyed the hardware surface @@ -2447,6 +2443,8 @@ public final class ViewRootImpl implements ViewParent, canvas = mSurface.lockCanvas(dirty); + // The dirty rectangle can be modified by Surface.lockCanvas() + //noinspection ConstantConditions if (left != dirty.left || top != dirty.top || right != dirty.right || bottom != dirty.bottom) { attachInfo.mIgnoreDirtyState = true; @@ -3097,8 +3095,7 @@ public final class ViewRootImpl implements ViewParent, boolean inTouchMode = msg.arg2 != 0; ensureTouchModeLocally(inTouchMode); - if (mAttachInfo.mHardwareRenderer != null && - mSurface != null && mSurface.isValid()) { + if (mAttachInfo.mHardwareRenderer != null && mSurface.isValid()){ mFullRedrawNeeded = true; try { mAttachInfo.mHardwareRenderer.initializeIfNeeded( |