diff options
| -rw-r--r-- | core/java/android/view/ViewRootImpl.java | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 64151d9d6c3f..36f8dd976d69 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -604,6 +604,8 @@ public final class ViewRootImpl implements ViewParent, */ private boolean mCheckIfCanDraw = false; + private boolean mDrewOnceForSync = false; + int mSyncSeqId = 0; int mLastSyncSeqId = 0; @@ -2991,6 +2993,9 @@ public final class ViewRootImpl implements ViewParent, reportNextDraw(); mSyncBuffer = true; isSyncRequest = true; + if (!cancelDraw) { + mDrewOnceForSync = false; + } } final boolean surfaceControlChanged = @@ -3512,9 +3517,11 @@ public final class ViewRootImpl implements ViewParent, mCheckIfCanDraw = isSyncRequest || cancelDraw; - boolean cancelAndRedraw = mAttachInfo.mTreeObserver.dispatchOnPreDraw() || cancelDraw; + boolean cancelAndRedraw = + mAttachInfo.mTreeObserver.dispatchOnPreDraw() || (cancelDraw && mDrewOnceForSync); if (!cancelAndRedraw) { createSyncIfNeeded(); + mDrewOnceForSync = true; } if (!isViewVisible) { |