Skip to content

Physical Android: two-finger gestures end with an ACTION_UP carrying both pointers, which Android rejects, while the tool reports success #1628

Closed as not planned

Description

@latekvo

[Diplomat, Opus 5.5]: On a physical Android device (kind: "device", android_device controller), gesture-pinch, gesture-rotate and a two-finger gesture-custom report success, but Android rejects the gesture's final event.

Repro (a Pixel API 34 emulator connected as adb connect 127.0.0.1:5559, so it is kind: "device", on the #1397 head 1e40265):

  1. Run gesture-pinch with centre (0.5, 0.6) and distance 0.1 -> 0.3. It returns pinched: true.
  2. logcat shows InputDispatcher: Injection failed: invalid event: invalid pointer count 2.
  3. On the next gesture-tap, logcat shows InputDispatcher: Conflicting pointer actions: Down received while already down or hovering. On API 34 the tap still lands.

On API 37 the #1397 author saw both pointers stay down after this and every later touch refused until a reboot (#1397 (comment)). That was on the same controller code, reached through the emulator fallback.

Cause: the android_device controller's send_touch (radon device_controller/android_device.rs) lifts both fingers with one ACTION_UP that carries both pointers, instead of an ACTION_POINTER_UP followed by an ACTION_UP.

Impact: on a user's phone a pinch or rotate is reported as done, even though Android rejected its last event. On recent Android it locks all touch input on the phone. #1397 rejects two-finger gestures only for an emulator that fell back to this controller (singleTouchOnly is set only when adbFallback), so physical phones still send it.

Activity

  1. added
    bugSomething isn't working
    b:minorBug that either affects a small cohort of users and affects a minor feature.
    on Oct 27, 2026
  2. added
    accepted-lowValid but low priority; closed as not planned. Reopen if it affects you.
    on Nov 6, 2026
  3. latekvo commented on Nov 6, 2026

    @latekvo
    MemberAuthor

    Valid, but low priority: it takes a specific setup to hit and no user has reported it. Closing as not planned to keep the tracker focused on issues users run into. It stays searchable under the accepted-low label - reopen or comment if it affects you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    accepted-lowValid but low priority; closed as not planned. Reopen if it affects you.b:minorBug that either affects a small cohort of users and affects a minor feature.bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions