Disable new touchpad stack for Sony gamepads

The touchpads on the Sony DualShock 4 and DualSense gamepads do not work
with the gestures library, for a reason that is currently unknown. This
is tracked in b/246587538, but while we wait for that to be fixed just
check for them by vendor and product ID, and fall back to the old stack.

This shouldn't really be a few IDs hard-coded into `InputDevice` — it
should be an input device configuration property, but since those are
currently only loaded in the configuration stage that will require a
larger change.

Bug: 251196347, 246587538
Test: `setprop persist.input.touchpad.gestures_library.enabled true`,
      connect gamepads, do a pinch gesture, confirm that touch spots
      show on screen (which doesn't happen in the new stack)
Test: `setprop persist.input.touchpad.gestures_library.enabled true`,
      run android.hardware.input.cts.tests.SonyDualshock4BluetoothTest
Change-Id: Iea756675248395e10cfc9d04371a1d46340b033b
diff --git a/services/inputflinger/reader/InputDevice.cpp b/services/inputflinger/reader/InputDevice.cpp
index 6e78e82..90d5d01 100644
--- a/services/inputflinger/reader/InputDevice.cpp
+++ b/services/inputflinger/reader/InputDevice.cpp
@@ -210,8 +210,14 @@
     // Touchscreens and touchpad devices.
     static const bool ENABLE_TOUCHPAD_GESTURES_LIBRARY =
             sysprop::InputProperties::enable_touchpad_gestures_library().value_or(false);
+    // TODO(b/246587538): Fix the new touchpad stack for Sony DualShock 4 (5c4, 9cc) and DualSense
+    // (ce6) touchpads, or at least load this setting from the IDC file.
+    const InputDeviceIdentifier& identifier = getDeviceInfo().getIdentifier();
+    const bool isSonyGamepadTouchpad = identifier.vendor == 0x054c &&
+            (identifier.product == 0x05c4 || identifier.product == 0x09cc ||
+             identifier.product == 0x0ce6);
     if (ENABLE_TOUCHPAD_GESTURES_LIBRARY && classes.test(InputDeviceClass::TOUCHPAD) &&
-        classes.test(InputDeviceClass::TOUCH_MT)) {
+        classes.test(InputDeviceClass::TOUCH_MT) && !isSonyGamepadTouchpad) {
         mappers.push_back(std::make_unique<TouchpadInputMapper>(*contextPtr));
     } else if (classes.test(InputDeviceClass::TOUCH_MT)) {
         mappers.push_back(std::make_unique<MultiTouchInputMapper>(*contextPtr));