summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/view/HardwareRenderer.java10
-rw-r--r--core/java/android/view/ViewRootImpl.java4
2 files changed, 11 insertions, 3 deletions
diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java
index f2b6b1fd870b..f2c3131ffd84 100644
--- a/core/java/android/view/HardwareRenderer.java
+++ b/core/java/android/view/HardwareRenderer.java
@@ -199,8 +199,10 @@ public abstract class HardwareRenderer {
* @param attachInfo AttachInfo tied to the specified view.
* @param callbacks Callbacks invoked when drawing happens.
* @param dirty The dirty rectangle to update, can be null.
+ *
+ * @return true if the dirty rect was ignored, false otherwise
*/
- abstract void draw(View view, View.AttachInfo attachInfo, HardwareDrawCallbacks callbacks,
+ abstract boolean draw(View view, View.AttachInfo attachInfo, HardwareDrawCallbacks callbacks,
Rect dirty);
/**
@@ -757,7 +759,7 @@ public abstract class HardwareRenderer {
}
@Override
- void draw(View view, View.AttachInfo attachInfo, HardwareDrawCallbacks callbacks,
+ boolean draw(View view, View.AttachInfo attachInfo, HardwareDrawCallbacks callbacks,
Rect dirty) {
if (canDraw()) {
if (!hasDirtyRegions()) {
@@ -825,8 +827,12 @@ public abstract class HardwareRenderer {
sEgl.eglSwapBuffers(sEglDisplay, mEglSurface);
checkEglErrors();
+
+ return dirty == null;
}
}
+
+ return false;
}
/**
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 380fc156a225..f23c3669b4f5 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -1798,7 +1798,9 @@ public final class ViewRootImpl extends Handler implements ViewParent,
currentDirty = null;
}
- mAttachInfo.mHardwareRenderer.draw(mView, mAttachInfo, this, currentDirty);
+ if (mAttachInfo.mHardwareRenderer.draw(mView, mAttachInfo, this, currentDirty)) {
+ mPreviousDirty.set(0, 0, mWidth, mHeight);
+ }
}
if (animating) {