summaryrefslogtreecommitdiff
path: root/core/java/android/view/ViewRoot.java
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2011-01-24 18:43:26 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2011-01-24 18:43:26 -0800
commite965dee34135e7bce186408d1265a5cfd05a9fb1 (patch)
tree8bbcec68281e10e6e636730eeefcb48216d8054a /core/java/android/view/ViewRoot.java
parenta89293c97006b9733b47df6a149b83e126498914 (diff)
parent4e1db6dadd404c023b71ae1ab54e990fce56abc3 (diff)
am 4e1db6da: am 2ff6d705: Merge "Enable partial invalidates when rendering with OpenGL." into honeycomb
* commit '4e1db6dadd404c023b71ae1ab54e990fce56abc3': Enable partial invalidates when rendering with OpenGL.
Diffstat (limited to 'core/java/android/view/ViewRoot.java')
-rw-r--r--core/java/android/view/ViewRoot.java15
1 files changed, 12 insertions, 3 deletions
diff --git a/core/java/android/view/ViewRoot.java b/core/java/android/view/ViewRoot.java
index 24a9d4298d43..25471b5eaa4b 100644
--- a/core/java/android/view/ViewRoot.java
+++ b/core/java/android/view/ViewRoot.java
@@ -165,7 +165,9 @@ public final class ViewRoot extends Handler implements ViewParent,
int mWidth;
int mHeight;
- Rect mDirty; // will be a graphics.Region soon
+ Rect mDirty;
+ final Rect mCurrentDirty = new Rect();
+ final Rect mPreviousDirty = new Rect();
boolean mIsAnimating;
CompatibilityInfo.Translator mTranslator;
@@ -1060,6 +1062,7 @@ public final class ViewRoot extends Handler implements ViewParent,
disposeResizeBitmap();
} else if (surfaceGenerationId != mSurface.getGenerationId() &&
mSurfaceHolder == null && mAttachInfo.mHardwareRenderer != null) {
+ fullRedrawNeeded = true;
mAttachInfo.mHardwareRenderer.updateSurface(mHolder);
}
} catch (RemoteException e) {
@@ -1493,10 +1496,15 @@ public final class ViewRoot extends Handler implements ViewParent,
if (mAttachInfo.mHardwareRenderer != null && mAttachInfo.mHardwareRenderer.isEnabled()) {
if (!dirty.isEmpty() || mIsAnimating) {
mIsAnimating = false;
- dirty.setEmpty();
mHardwareYOffset = yoff;
mResizeAlpha = resizeAlpha;
- mAttachInfo.mHardwareRenderer.draw(mView, mAttachInfo, this);
+
+ mCurrentDirty.set(dirty);
+ mCurrentDirty.union(mPreviousDirty);
+ mPreviousDirty.set(dirty);
+ dirty.setEmpty();
+
+ mAttachInfo.mHardwareRenderer.draw(mView, mAttachInfo, this, mCurrentDirty);
}
if (animating) {
@@ -1995,6 +2003,7 @@ public final class ViewRoot extends Handler implements ViewParent,
if (mAttachInfo.mHardwareRenderer != null &&
mSurface != null && mSurface.isValid()) {
+ mFullRedrawNeeded = true;
mAttachInfo.mHardwareRenderer.initializeIfNeeded(mWidth, mHeight,
mAttachInfo, mHolder);
}