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

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

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

Jump to solution
1,933 Views
westbrook
Contributor III

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(Yocto L4.1.15-2.1.0), 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?

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.

Thank you in advance.


BR
XiaoQ

0 Kudos
1 Solution
1,421 Views
westbrook
Contributor III

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:

pastedImage_1.png

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:

pastedImage_2.png

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:
pastedImage_1203.png

BR

XiaoQ

View solution in original post

0 Kudos
1 Reply
1,422 Views
westbrook
Contributor III

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:

pastedImage_1.png

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:

pastedImage_2.png

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:
pastedImage_1203.png

BR

XiaoQ

0 Kudos