Ensure we register the input consumer on the ui thread.
- We register the input consumer on the interim choreographer thread
but unregister the input consumer on the UI thread when invalidating
the previous handler. This may have caused a race condition where
the disposal of the input consumer overlapped with the registration
of the new one (they share a key in the input consumer map in the
system)
Bug: 73505150
Test: Unable to reproduce, this is a hypothetical fix
Change-Id: I20a9a7be967f5072bbf50ce12e5e61cb939e3c75
diff --git a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
index f49106e..3474581 100644
--- a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
+++ b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
@@ -235,7 +235,9 @@
mContext = context;
mRunningTaskId = runningTaskInfo.id;
mTouchTimeMs = touchTimeMs;
- mInputConsumer.registerInputConsumer();
+ // Register the input consumer on the UI thread, to ensure that it runs after any pending
+ // unregister calls
+ mMainExecutor.execute(mInputConsumer::registerInputConsumer);
initStateCallbacks();
}