From 26529d377fe8aae2fd1ffa91405aa801a0ce8a57 Mon Sep 17 00:00:00 2001 From: Romain Vimont Date: Fri, 29 Nov 2019 14:15:43 +0100 Subject: [PATCH] Use virtual device id to avoid NPE Inject mouse events using id -1 (virtual device) instead of 0 which does not exist (and causes the InputDevice to be null). Fixes --- .../main/java/com/genymobile/scrcpy/Controller.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/server/src/main/java/com/genymobile/scrcpy/Controller.java b/server/src/main/java/com/genymobile/scrcpy/Controller.java index 65feda55..51b13627 100644 --- a/server/src/main/java/com/genymobile/scrcpy/Controller.java +++ b/server/src/main/java/com/genymobile/scrcpy/Controller.java @@ -13,6 +13,8 @@ import java.io.IOException; public class Controller { + private static final int DEVICE_ID_VIRTUAL = -1; + private final Device device; private final DesktopConnection connection; private final DeviceMessageSender sender; @@ -174,8 +176,9 @@ public class Controller { } } - MotionEvent event = MotionEvent.obtain(lastTouchDown, now, action, pointerCount, pointerProperties, pointerCoords, 0, buttons, 1f, 1f, 0, 0, - InputDevice.SOURCE_TOUCHSCREEN, 0); + MotionEvent event = MotionEvent + .obtain(lastTouchDown, now, action, pointerCount, pointerProperties, pointerCoords, 0, buttons, 1f, 1f, DEVICE_ID_VIRTUAL, 0, + InputDevice.SOURCE_TOUCHSCREEN, 0); return injectEvent(event); } @@ -196,8 +199,9 @@ public class Controller { coords.setAxisValue(MotionEvent.AXIS_HSCROLL, hScroll); coords.setAxisValue(MotionEvent.AXIS_VSCROLL, vScroll); - MotionEvent event = MotionEvent.obtain(lastTouchDown, now, MotionEvent.ACTION_SCROLL, 1, pointerProperties, pointerCoords, 0, 0, 1f, 1f, 0, 0, - InputDevice.SOURCE_MOUSE, 0); + MotionEvent event = MotionEvent + .obtain(lastTouchDown, now, MotionEvent.ACTION_SCROLL, 1, pointerProperties, pointerCoords, 0, 0, 1f, 1f, DEVICE_ID_VIRTUAL, 0, + InputDevice.SOURCE_MOUSE, 0); return injectEvent(event); }