diff --git a/ion/src/simulator/android/src/java/org/libsdl/app/SDLActivity.java b/ion/src/simulator/android/src/java/org/libsdl/app/SDLActivity.java index 082ae4be174..d87dc122a7f 100644 --- a/ion/src/simulator/android/src/java/org/libsdl/app/SDLActivity.java +++ b/ion/src/simulator/android/src/java/org/libsdl/app/SDLActivity.java @@ -1866,7 +1866,7 @@ else if (event.getAction() == KeyEvent.ACTION_UP) { @Override public boolean onTouch(View v, MotionEvent event) { /* Ref: http://developer.android.com/training/gestures/multi.html */ - final int touchDevId = event.getDeviceId(); + int touchDevId = event.getDeviceId(); final int pointerCount = event.getPointerCount(); int action = event.getActionMasked(); int pointerFingerId; @@ -1874,6 +1874,16 @@ public boolean onTouch(View v, MotionEvent event) { int i = -1; float x,y,p; + /** + * Prevent id to be -1, since it's used in SDL internal for synthetic events + * Appears when using Android emulator, eg: + * adb shell input mouse tap 100 100 + * adb shell input touchscreen tap 100 100 + */ + if (touchDevId < 0) { + touchDevId -= 1; + } + // 12290 = Samsung DeX mode desktop mouse // 12290 = 0x3002 = 0x2002 | 0x1002 = SOURCE_MOUSE | SOURCE_TOUCHSCREEN // 0x2 = SOURCE_CLASS_POINTER