diff options
| -rw-r--r-- | core/java/android/view/HardwareRenderer.java | 10 | ||||
| -rw-r--r-- | core/java/android/view/ViewRootImpl.java | 4 |
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) { |