For touchpads, rel_queued may be on (due to abs to rel conversion) but the delta for x/y is 0/0 on the first touch. Hence, we don't have any valuators to post. The current results in a num_vals of -15 and a subsequent segfault when the data is posted to the server.
Start with a last valuator of -1, so that we know if we have at least one to post. X.Org Bug 32480 <http://bugs.freedesktop.org/show_bug.cgi?id=32480> Signed-off-by: Peter Hutterer <[email protected]> --- Testcase: server 1.9 with evdev 2.5.99.902 (not git master!) and force evdev for touchpads. Server will crash when touchpad is used the first time. src/evdev.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/evdev.c b/src/evdev.c index 50847a8..d47b6c2 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -402,7 +402,7 @@ EvdevProcessValuators(InputInfoPtr pInfo, int v[MAX_VALUATORS], int *num_v, } if (pEvdev->rel_queued) { - int first = REL_CNT, last = 0; + int first = REL_CNT, last = -1; int i; if (pEvdev->swap_axes) { @@ -428,8 +428,11 @@ EvdevProcessValuators(InputInfoPtr pInfo, int v[MAX_VALUATORS], int *num_v, } } - *num_v = (last - first + 1); - *first_v = first; + if (last >= 0) + { + *num_v = (last - first + 1); + *first_v = first; + } } /* * Some devices only generate valid abs coords when BTN_TOOL_PEN is -- 1.7.3.4 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
