Batch ACTION_MOVE events to vsync boundries when resizing task
- Created helper class BatchedInputEventReceiver for batching
ACTION_MOVE events to vsync boundries.
- Switched TaskPositioner to use new helper class for input events
so we reduce the number of input events we process per vsync.
Bug: 24375616
Change-Id: I4ee27949b956784fb89d8f190497e4765522c9d3
diff --git a/services/core/java/com/android/server/wm/TaskPositioner.java b/services/core/java/com/android/server/wm/TaskPositioner.java
index a94be83..c4ff886 100644
--- a/services/core/java/com/android/server/wm/TaskPositioner.java
+++ b/services/core/java/com/android/server/wm/TaskPositioner.java
@@ -35,12 +35,13 @@
import android.os.RemoteException;
import android.util.DisplayMetrics;
import android.util.Slog;
+import android.view.Choreographer;
import android.view.Display;
import android.view.DisplayInfo;
import android.view.InputChannel;
import android.view.InputDevice;
import android.view.InputEvent;
-import android.view.InputEventReceiver;
+import android.view.BatchedInputEventReceiver;
import android.view.MotionEvent;
import android.view.SurfaceControl;
import android.view.WindowManager;
@@ -102,9 +103,10 @@
InputApplicationHandle mDragApplicationHandle;
InputWindowHandle mDragWindowHandle;
- private final class WindowPositionerEventReceiver extends InputEventReceiver {
- public WindowPositionerEventReceiver(InputChannel inputChannel, Looper looper) {
- super(inputChannel, looper);
+ private final class WindowPositionerEventReceiver extends BatchedInputEventReceiver {
+ public WindowPositionerEventReceiver(
+ InputChannel inputChannel, Looper looper, Choreographer choreographer) {
+ super(inputChannel, looper, choreographer);
}
@Override
@@ -214,8 +216,8 @@
mClientChannel = channels[1];
mService.mInputManager.registerInputChannel(mServerChannel, null);
- mInputEventReceiver = new WindowPositionerEventReceiver(mClientChannel,
- mService.mH.getLooper());
+ mInputEventReceiver = new WindowPositionerEventReceiver(
+ mClientChannel, mService.mH.getLooper(), mService.mChoreographer);
mDragApplicationHandle = new InputApplicationHandle(null);
mDragApplicationHandle.name = TAG;