The KdEnqueuePointerEvent cannot work with tslib driver I am running the Xfbdev on an ARM platform, using the git source and using this command to config: ./autogen.sh --prefix=/arm1/opt/fdo --disable-ipv6 --enable-tslib --enable-kdrive --enable-xfbdev --disable-glx --disable-xorg --disable-xorgcfg --disable-dri --enable-xcalibrate --enable-screensaver the screensize is 480x272 Use this command to launch the Xfbdev: ./Xfbdev -mouse tslib,3,device=/dev/input/event0 I add some ErrorF in this function, I click two times on the touchscreen: ErrorF("%s %s flags=0x%x rx=%d ry=%d LastState=0x%x T=%d\n", __FUNCTION__, pi->name, flags, rx, ry, pi->buttonState, pi->transformCoordinates); ErrorF("x=%d y=%d [%d-%d] dixflags=0x%x buttons=0x%x\n", x, y, pi->dixdev->last.valuators[0], pi->dixdev->last.valuators[1], dixflags, flags); Below is the debug log first click: KdEnqueuePointerEvent Touchscreen flags=0x1 rx=11 ry=261 LastState=0x0 T=1 x=11 y=261 [0-0] dixflags=0x4 buttons=0x1 type=0x6 x=11 y=261 b=0 type=0x4 x=11 y=261 b=1 KdEnqueuePointerEvent Touchscreen flags=0x0 rx=11 ry=261 LastState=0x1 T=1 x=11 y=261 [11-261] dixflags=0x0 buttons=0x0 type=0x5 x=11 y=261 b=1 Second click: KdEnqueuePointerEvent Touchscreen flags=0x1 rx=62 ry=222 LastState=0x0 T=1 x=62 y=222 [22-271] dixflags=0x4 buttons=0x1 type=0x6 x=62 y=222 b=0 type=0x4 x=62 y=222 b=1 KdEnqueuePointerEvent Touchscreen flags=0x0 rx=62 ry=222 LastState=0x1 T=1 x=62 y=222 [62-222] dixflags=0x0 buttons=0x0 type=0x5 x=62 y=222 b=1 the problem is the last.valuators have wrong values. On the ButtonPress event, the last.valuators store the X/Y postion value, however, on the ButtonRelease event, it adds the old X/Y postion value. this causes the second click has wrong [22-271] value
Created attachment 19515 [details] [review] 0001-kdrive-fix-dixflags-so-they-re-always-defined-befor.patch This patch should fix the issue (untested though) If absolute events were posted, dixflags got set conditionally on whether the valuators are different from the last posted set of values. If dixflags are undefined however, the DIX interprets them as relative valuators. Fix this by making sure defining dixflags is always defined.
pushed as 18cdd733ad3dd36fa0a23dfbf18c7d99b86c0276.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.