Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

QGestureManager::deliverEvent: could not find the target for gesture



  • Hi guys:

    I am using QT5.6.1 + qtwayland5.6.1 + weston-1.11.0 + libinput-1.4.1 + touchscreen on NXP imx6, wayland rootfs, the original weston display resolution is 1280x720, I changed the weston to rotate 270 degree to adapt the 720x1280 LCD(set "transform=270" in weston.ini file). Now the display is corrent on the 720x1280 LCD, however, the gesture have some problem:
    when touch the up area of touchscreen(720x720) with two fingers, the gesture can be caught by QT, when touch the bottom area of touch screen(720x560, 560 means 1280-720) with two fingers, the warning message "QGestureManager::deliverEvent: could not find the target for gesture" shows up, and the gesture is ignored by QT.
    What is reason here? How Can I caught the bottom area gesture? Is there any settings for input devices to solve this issue?

    Thank you in advance.
    BR
    XiaoQ



  • Hi guys,

    Finally, I found out the reason, this maybe a bug in QT wayland or weston.

    (1) Here is why the warning message prompt:
    alt text

    The gesture point is judged outside the screen, then the target is 0, then the warning message prompt.

    (2) Here is how the screen geometry is set:
    alt text

    The value is get from the framebuffer attribute. When qtwayland do rotation in QWaylandScreen::output_done(), it does not swap the width and height, the resolution read from FB is 1280x720, when rotate 270 degree, the width and height should be 720x1280, however, qtwayland does not change the width and height. Which cause the QTbase query a 1280x720 screen resolution, it is different from the touchscreen 720x1280. This cause the warning message when catch gesture on the bottom of touchscreen.

    (3)Resolution:
    When rotate 270 degree in QT wayland, swap the width and height of mGeometry,this make the QT query a 720x1280 resolution of the screen,
    This is same as the touchscreen 1280x720.

    Thus, the botton part gesture is caught and report to QT application, this modification will not affect the 1280x720 screen, it does not transform in westom.

    Code modification:
    alt text

    BR
    XiaoQ



  • Hi , guys,

    I add some reference info:
    We also have a board with 1280x720 LCD, on this board, I do not set "transform=270" in weston.ini file, this means no rotation for weston output, then the gesture can be caught by QT all the screen, ie on the area 1280x720.

    I think this issue is caused by some settings for input device rotation, maybe input device rotation is not adjust with the output device?

    Can anyone give some advice?

    Thank you.

    BR
    XiaoQ



  • Hi guys,

    Finally, I found out the reason, this maybe a bug in QT wayland or weston.

    (1) Here is why the warning message prompt:
    alt text

    The gesture point is judged outside the screen, then the target is 0, then the warning message prompt.

    (2) Here is how the screen geometry is set:
    alt text

    The value is get from the framebuffer attribute. When qtwayland do rotation in QWaylandScreen::output_done(), it does not swap the width and height, the resolution read from FB is 1280x720, when rotate 270 degree, the width and height should be 720x1280, however, qtwayland does not change the width and height. Which cause the QTbase query a 1280x720 screen resolution, it is different from the touchscreen 720x1280. This cause the warning message when catch gesture on the bottom of touchscreen.

    (3)Resolution:
    When rotate 270 degree in QT wayland, swap the width and height of mGeometry,this make the QT query a 720x1280 resolution of the screen,
    This is same as the touchscreen 1280x720.

    Thus, the botton part gesture is caught and report to QT application, this modification will not affect the 1280x720 screen, it does not transform in westom.

    Code modification:
    alt text

    BR
    XiaoQ


Log in to reply