diff --git a/core/java/android/view/InsetsController.java b/core/java/android/view/InsetsController.java index a4841f6f0d952..7b6a0d64f9804 100644 --- a/core/java/android/view/InsetsController.java +++ b/core/java/android/view/InsetsController.java @@ -1310,8 +1310,8 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation } private void cancelAnimation(InsetsAnimationControlRunner control, boolean invokeCallback) { - if (DEBUG) Log.d(TAG, String.format("cancelAnimation of types: %d, animType: %d", - control.getTypes(), control.getAnimationType())); + if (DEBUG) Log.d(TAG, String.format("cancelAnimation of types: %d, animType: %d, host: %s", + control.getTypes(), control.getAnimationType(), mHost.getRootViewTitle())); if (invokeCallback) { control.cancel(); } diff --git a/core/java/android/view/ViewRootInsetsControllerHost.java b/core/java/android/view/ViewRootInsetsControllerHost.java index 4387701f7a24e..d960ba1489ca0 100644 --- a/core/java/android/view/ViewRootInsetsControllerHost.java +++ b/core/java/android/view/ViewRootInsetsControllerHost.java @@ -125,10 +125,11 @@ public class ViewRootInsetsControllerHost implements InsetsController.Host { if (mApplier == null) { mApplier = new SyncRtSurfaceTransactionApplier(mViewRoot.mView); } - if (mViewRoot.mView.isHardwareAccelerated()) { + if (mViewRoot.mView.isHardwareAccelerated() && isVisibleToUser()) { mApplier.scheduleApply(params); } else { - // Window doesn't support hardware acceleration, no synchronization for now. + // Synchronization requires hardware acceleration for now. + // If the window isn't visible, drawing is paused and the applier won't run. // TODO(b/149342281): use mViewRoot.mSurface.getNextFrameNumber() to sync on every // frame instead. final SurfaceControl.Transaction t = new SurfaceControl.Transaction(); @@ -269,4 +270,8 @@ public class ViewRootInsetsControllerHost implements InsetsController.Host { } return null; } + + private boolean isVisibleToUser() { + return mViewRoot.getHostVisibility() == View.VISIBLE; + } }