Android: TouchDevice -1 is reserved for SDL synthetic devce (See #5322)

This commit is contained in:
Sylvain 2022-02-08 11:42:24 +01:00
parent 94e5c3f30e
commit 68dd84f1de
No known key found for this signature in database
GPG Key ID: 5F87E02E5BC0939E
1 changed files with 11 additions and 1 deletions

View File

@ -1205,7 +1205,17 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
for (int id : ids) { for (int id : ids) {
InputDevice device = InputDevice.getDevice(id); InputDevice device = InputDevice.getDevice(id);
if (device != null && (device.getSources() & InputDevice.SOURCE_TOUCHSCREEN) == InputDevice.SOURCE_TOUCHSCREEN) { if (device != null && (device.getSources() & InputDevice.SOURCE_TOUCHSCREEN) == InputDevice.SOURCE_TOUCHSCREEN) {
nativeAddTouch(device.getId(), device.getName()); int touchDevId = device.getId();
/*
* 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;
}
nativeAddTouch(touchDevId, device.getName());
} }
} }
} }