Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-99426

Multi-touch lost data

    XMLWordPrintable

Details

    • G&UI Finishing 2023

    Description

      I compiled and ran the qt demo fingerpaint.

      When my five fingers moved on the touch screen at the same time, the demo only drew one line.

      Please see the attached video.

       

      I debugged the qt source code and found the root cause of this issue.

      The root cause is that some touch points do not have target, so it cannot be posted to widgets.

       

      When I tap the screen with five fingers. Only one finger touches the screen first. So the first touch event has only 1 point. 

      The device type is TouchScreen and usingClosestWidget is false, so the target will not be set here.

      Because the type of the first touch event is TouchBegin, the target of the touch point will be set in QApplicationPrivate::activateImplicitTouchGrab.

      The touch event triggered by the first finger can be post to the widget.

      The second touch event has 5 points. There is one point whose state is Updated. The state with 4 points is Pressed.
      In QApplicationPrivate::translateRawTouchEvent, the closestWidgets of 4 points are all null. So these 4 points will not be set the target.
      Because the state of the touch event is TouchUpdate, QApplicationPrivate::activateImplicitTouchGrab will not be called.
      These 4 points have no target, so they will not be posted to the widget.

       

      I don't know how to fix this issue. If anyone has any ideas , please let me know.

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            srutledg Shawn Rutledge
            bihong hong bi
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes