Loading core/java/android/view/SurfaceView.java +1 −1 Original line number Diff line number Diff line Loading @@ -967,7 +967,7 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall final boolean redrawNeeded = sizeChanged || creating || hintChanged || (mVisible && !mDrawFinished); boolean shouldSyncBuffer = redrawNeeded && viewRoot.wasRelayoutRequested() && viewRoot.isInSync(); redrawNeeded && viewRoot.wasRelayoutRequested() && viewRoot.isInLocalSync(); SyncBufferTransactionCallback syncBufferTransactionCallback = null; if (shouldSyncBuffer) { syncBufferTransactionCallback = new SyncBufferTransactionCallback(); Loading core/java/android/view/ViewRootImpl.java +24 −16 Original line number Diff line number Diff line Loading @@ -319,6 +319,8 @@ public final class ViewRootImpl implements ViewParent, */ private static final int SCROLL_CAPTURE_REQUEST_TIMEOUT_MILLIS = 2500; private static final int UNSET_SYNC_ID = -1; @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) static final ThreadLocal<HandlerActionQueue> sRunQueues = new ThreadLocal<HandlerActionQueue>(); Loading Loading @@ -815,7 +817,7 @@ public final class ViewRootImpl implements ViewParent, } private final SurfaceSyncer mSurfaceSyncer = new SurfaceSyncer(); private int mLastSyncId = -1; private int mSyncId = UNSET_SYNC_ID; private SurfaceSyncer.SyncBufferCallback mSyncBufferCallback; private int mNumSyncsInProgress = 0; Loading Loading @@ -3463,21 +3465,21 @@ public final class ViewRootImpl implements ViewParent, mReportNextDraw = false; mSyncBufferCallback = null; mSyncBuffer = false; if (mLastSyncId != -1) { mSurfaceSyncer.markSyncReady(mLastSyncId); mLastSyncId = -1; if (isInLocalSync()) { mSurfaceSyncer.markSyncReady(mSyncId); mSyncId = UNSET_SYNC_ID; } } } private void createSyncIfNeeded() { // Started a sync already or there's nothing needing to sync if (mLastSyncId != -1 || !mReportNextDraw) { if (isInLocalSync() || !mReportNextDraw) { return; } final int seqId = mSyncSeqId; mLastSyncId = mSurfaceSyncer.setupSync(transaction -> { mSyncId = mSurfaceSyncer.setupSync(transaction -> { // Callback will be invoked on executor thread so post to main thread. mHandler.postAtFrontOfQueue(() -> { mSurfaceChangedTransaction.merge(transaction); Loading @@ -3485,9 +3487,9 @@ public final class ViewRootImpl implements ViewParent, }); }); if (DEBUG_BLAST) { Log.d(mTag, "Setup new sync id=" + mLastSyncId); Log.d(mTag, "Setup new sync id=" + mSyncId); } mSurfaceSyncer.addToSync(mLastSyncId, mSyncTarget); mSurfaceSyncer.addToSync(mSyncId, mSyncTarget); } private void notifyContentCatpureEvents() { Loading Loading @@ -4123,17 +4125,19 @@ public final class ViewRootImpl implements ViewParent, return mAttachInfo.mThreadedRenderer != null && mAttachInfo.mThreadedRenderer.isEnabled(); } boolean addToSync(SurfaceSyncer.SyncTarget syncable) { if (mLastSyncId == -1) { return false; void addToSync(SurfaceSyncer.SyncTarget syncable) { if (!isInLocalSync()) { return; } mSurfaceSyncer.addToSync(mLastSyncId, syncable); return true; mSurfaceSyncer.addToSync(mSyncId, syncable); } public boolean isInSync() { return mLastSyncId != -1; /** * This VRI is currently in the middle of a sync request, but specifically one initiated from * within VRI. */ public boolean isInLocalSync() { return mSyncId != UNSET_SYNC_ID; } private void addFrameCommitCallbackIfNeeded() { Loading Loading @@ -10895,6 +10899,10 @@ public final class ViewRootImpl implements ViewParent, private void readyToSync(SurfaceSyncer.SyncBufferCallback syncBufferCallback) { mNumSyncsInProgress++; if (!isInLocalSync()) { // Always sync the buffer if the sync request did not come from VRI. mSyncBuffer = true; } if (mAttachInfo.mThreadedRenderer != null) { HardwareRenderer.setRtAnimationsEnabled(false); } Loading Loading
core/java/android/view/SurfaceView.java +1 −1 Original line number Diff line number Diff line Loading @@ -967,7 +967,7 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall final boolean redrawNeeded = sizeChanged || creating || hintChanged || (mVisible && !mDrawFinished); boolean shouldSyncBuffer = redrawNeeded && viewRoot.wasRelayoutRequested() && viewRoot.isInSync(); redrawNeeded && viewRoot.wasRelayoutRequested() && viewRoot.isInLocalSync(); SyncBufferTransactionCallback syncBufferTransactionCallback = null; if (shouldSyncBuffer) { syncBufferTransactionCallback = new SyncBufferTransactionCallback(); Loading
core/java/android/view/ViewRootImpl.java +24 −16 Original line number Diff line number Diff line Loading @@ -319,6 +319,8 @@ public final class ViewRootImpl implements ViewParent, */ private static final int SCROLL_CAPTURE_REQUEST_TIMEOUT_MILLIS = 2500; private static final int UNSET_SYNC_ID = -1; @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) static final ThreadLocal<HandlerActionQueue> sRunQueues = new ThreadLocal<HandlerActionQueue>(); Loading Loading @@ -815,7 +817,7 @@ public final class ViewRootImpl implements ViewParent, } private final SurfaceSyncer mSurfaceSyncer = new SurfaceSyncer(); private int mLastSyncId = -1; private int mSyncId = UNSET_SYNC_ID; private SurfaceSyncer.SyncBufferCallback mSyncBufferCallback; private int mNumSyncsInProgress = 0; Loading Loading @@ -3463,21 +3465,21 @@ public final class ViewRootImpl implements ViewParent, mReportNextDraw = false; mSyncBufferCallback = null; mSyncBuffer = false; if (mLastSyncId != -1) { mSurfaceSyncer.markSyncReady(mLastSyncId); mLastSyncId = -1; if (isInLocalSync()) { mSurfaceSyncer.markSyncReady(mSyncId); mSyncId = UNSET_SYNC_ID; } } } private void createSyncIfNeeded() { // Started a sync already or there's nothing needing to sync if (mLastSyncId != -1 || !mReportNextDraw) { if (isInLocalSync() || !mReportNextDraw) { return; } final int seqId = mSyncSeqId; mLastSyncId = mSurfaceSyncer.setupSync(transaction -> { mSyncId = mSurfaceSyncer.setupSync(transaction -> { // Callback will be invoked on executor thread so post to main thread. mHandler.postAtFrontOfQueue(() -> { mSurfaceChangedTransaction.merge(transaction); Loading @@ -3485,9 +3487,9 @@ public final class ViewRootImpl implements ViewParent, }); }); if (DEBUG_BLAST) { Log.d(mTag, "Setup new sync id=" + mLastSyncId); Log.d(mTag, "Setup new sync id=" + mSyncId); } mSurfaceSyncer.addToSync(mLastSyncId, mSyncTarget); mSurfaceSyncer.addToSync(mSyncId, mSyncTarget); } private void notifyContentCatpureEvents() { Loading Loading @@ -4123,17 +4125,19 @@ public final class ViewRootImpl implements ViewParent, return mAttachInfo.mThreadedRenderer != null && mAttachInfo.mThreadedRenderer.isEnabled(); } boolean addToSync(SurfaceSyncer.SyncTarget syncable) { if (mLastSyncId == -1) { return false; void addToSync(SurfaceSyncer.SyncTarget syncable) { if (!isInLocalSync()) { return; } mSurfaceSyncer.addToSync(mLastSyncId, syncable); return true; mSurfaceSyncer.addToSync(mSyncId, syncable); } public boolean isInSync() { return mLastSyncId != -1; /** * This VRI is currently in the middle of a sync request, but specifically one initiated from * within VRI. */ public boolean isInLocalSync() { return mSyncId != UNSET_SYNC_ID; } private void addFrameCommitCallbackIfNeeded() { Loading Loading @@ -10895,6 +10899,10 @@ public final class ViewRootImpl implements ViewParent, private void readyToSync(SurfaceSyncer.SyncBufferCallback syncBufferCallback) { mNumSyncsInProgress++; if (!isInLocalSync()) { // Always sync the buffer if the sync request did not come from VRI. mSyncBuffer = true; } if (mAttachInfo.mThreadedRenderer != null) { HardwareRenderer.setRtAnimationsEnabled(false); } Loading