ChangeLog | 159 ++++++++++++++++++++++++++- configure.ac | 2 debian/changelog | 16 +- debian/control | 2 debian/patches/0006-axis-label-overrun.patch | 66 ----------- debian/patches/series | 2 src/emuWheel.c | 4 src/evdev.c | 83 +++++++++----- src/evdev.h | 1 9 files changed, 226 insertions(+), 109 deletions(-)
New commits: commit bc376031365d24ac60a18cc98db73d2da803c59b Author: Julien Cristau <jcris...@debian.org> Date: Fri Aug 3 12:33:49 2012 +0200 Upload to experimental diff --git a/debian/changelog b/debian/changelog index d12859a..2d08085 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -xserver-xorg-input-evdev (1:2.7.1-1) UNRELEASED; urgency=low +xserver-xorg-input-evdev (1:2.7.1-1) experimental; urgency=low [ Maarten Lankhorst ] * Merge the 1:2.7.0-1 sid upload @@ -6,10 +6,10 @@ xserver-xorg-input-evdev (1:2.7.1-1) UNRELEASED; urgency=low * Add -dbg package for symbols [ Julien Cristau ] - * New upstream bugfix release. + * New upstream bugfix release, with multitouch enabled (closes: #683723). * Pull from upstream evdev-2.7-branch, commit 7469081. - -- Julien Cristau <jcris...@debian.org> Fri, 03 Aug 2012 12:24:21 +0200 + -- Julien Cristau <jcris...@debian.org> Fri, 03 Aug 2012 12:32:30 +0200 xserver-xorg-input-evdev (1:2.7.0-1) unstable; urgency=low commit f72e464ea26ebb030651f270fee308612e9d5083 Author: Julien Cristau <jcris...@debian.org> Date: Fri Aug 3 12:29:54 2012 +0200 Bump changelogs, drop patch merged upstream diff --git a/ChangeLog b/ChangeLog index c7775ac..149f824 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,160 @@ -commit 99340147b9092a5aaec997eca407282a51e1f063 +commit 74690817fcd3e91ea384b8f311d8ce5626d8c409 +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Wed Jul 4 09:14:41 2012 +1000 + + Don't re-open mtdev after PreInit + + ==16557== 388,240 (3,520 direct, 384,720 indirect) bytes in 10 blocks are definitely lost in loss record 1,669 of 1,671 + ==16557== at 0x4A06F18: calloc (vg_replace_malloc.c:566) + ==16557== by 0xC3EAD4D: mtdev_new (core.c:345) + ==16557== by 0xC3EAE6B: mtdev_new_open (core.c:383) + ==16557== by 0xC1E0452: EvdevOpenDevice (evdev.c:2365) + ==16557== by 0xC1E068C: EvdevPreInit (evdev.c:2431) + ==16557== by 0x4B8304: xf86NewInputDevice (xf86Xinput.c:846) + ==16557== by 0x4B8857: NewInputDeviceRequest (xf86Xinput.c:989) + ==16557== by 0x4CCB4C: device_added (udev.c:211) + ==16557== by 0x4CCFA6: config_udev_init (udev.c:342) + ==16557== by 0x4CBE81: config_init (config.c:48) + ==16557== by 0x4A8A9A: InitInput (xf86Init.c:918) + ==16557== by 0x4921EE: main (main.c:258) + + After PreInit, the fd and mtdev pointer are still valid. We check for the + fd, but unconditionally allocated another mtdev struct for each device. + + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + Reviewed-by: Chase Douglas <chase.doug...@canonical.com> + (cherry picked from commit 98af2003d48530b2e102cf667a9d40dcb94cb0fe) + +commit b2cbbb178e9a3650118bdf498e678ca4e12062fe +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Mon May 28 10:08:23 2012 +1000 + + Constify InputDriverRec->default_options + + Removes a warning, and with the input ABI 18 this is forced to const in the + server. + + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + Reviewed-by: Chase Douglas <chase.doug...@canonical.com> + (cherry picked from commit 9624f4e2ba7d1973813de066806eed108748a53a) + +commit 7d91fc7bfcdaaac657aeb7b8876a4002ad0fa68d +Author: Marcin Slusarz <marcin.slus...@gmail.com> +Date: Mon May 21 01:22:33 2012 +0200 + + Fix some obvious constness-related compile warnings. + + Signed-off-by: Marcin Slusarz <marcin.slus...@gmail.com> + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + (cherry picked from commit 2c8da280b3ab635d049784345d025d289348687b) + +commit 09987eab9a77aa94127ecacca41498bc5e83c0eb +Author: Daniel Stone <dan...@fooishbar.org> +Date: Tue Jul 10 00:34:56 2012 +0100 + + Fix compilation warnings for non-multitouch builds + + Signed-off-by: Daniel Stone <dan...@fooishbar.org> + Reviewed-by: Chase Douglas <chase.doug...@canonical.com> + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + (cherry picked from commit f5ede98085688b59dc56a9cc6592f75552a4e7ed) + +commit 8af0e6f1ebaf327f735bca507134b34bb24b26c6 +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Fri May 25 14:04:22 2012 +1000 + + strtol doesn't need a empty string, NULL is good enough. + + Fixes: + evdev.c: In function 'EvdevInitButtonMapping': + evdev.c:1659:25: warning: initialization discards 'const' qualifier from + pointer target type [enabled by default] + + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + Reviewed-by: Chase Douglas <chase.doug...@canonical.com> + (cherry picked from commit 61faf2e6e70a4c9ecffe638d46829738dc2e3452) + +commit 56e9a7a248d70fd55ecc3588e72d0172d7c9ad27 +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Tue Jul 24 14:05:09 2012 +1000 + + evdev 2.7.1 + + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + +commit 7df65237741b167b18ff0962a7bfc3db9d4826ed +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Mon May 28 09:50:15 2012 +1000 + + Close the fd when mtdev open fails + + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + Reviewed-by: Chase Douglas <chase.doug...@canonical.com> + (cherry picked from commit 8251d7a8ec00b4160b6601a6f2f4f0f5d461cbee) + +commit f4e76a4c53f2abe0bd737485e0b32d6d36425118 +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Mon May 28 09:08:43 2012 +1000 + + Release mtdev data whenever we close the fd + + Add a new EvdevCloseDevice() function to unify this. + We used to leak data + - PreInit allocates mtdev, but nothing except one error path released it. + - each DEVICE_ON re-allocates mtdev but it is never released + + Reported-by: Zdenek Kabelac <zdenek.kabe...@gmail.com> + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + Reviewed-by: Chase Douglas <chase.doug...@canonical.com> + (cherry picked from commit ac5173163d7d1e18d47630a397ece0f26b2568c8) + +commit ac772cde9469c406564433d6d41416fa2279fbf9 +Author: Chase Douglas <chase.doug...@canonical.com> +Date: Wed Jun 6 12:07:12 2012 -0700 + + Fix buffer overrun when populating axis label property array + + The axis label property array currently only has enough elements for the + non-multitouch axes. This change allocates enough space for all axes, + which prevents an array overrun write. This may manifest as stack + corruption on some platforms. + + Signed-off-by: Chase Douglas <chase.doug...@canonical.com> + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + (cherry picked from commit 4145fe1c087708bf5d6608e328342282ecb93ab0) + +commit 774915924102c348ce7045ffa07905d1079f447c +Author: Chase Douglas <chase.doug...@canonical.com> +Date: Thu May 24 10:48:38 2012 -0700 + + Report the correct number of touches for MT protocol B devices + + Protocol B devices report the number of touches by giving a maximum and + minimum slot value. The current code ignores the minimum value, which is + usually 0, and underreports the number of touches by 1. + + Signed-off-by: Chase Douglas <chase.doug...@canonical.com> + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + (cherry picked from commit 9ce068e760e1282183c7aa1b4cc6b0fcb6b494dd) + +commit 833fc517d75934797bdadbf043b18a1c94fc1293 +Author: Peter Hutterer <peter.hutte...@who-t.net> +Date: Fri Apr 27 15:42:17 2012 +1000 + + Devices configured as mice need REL_X/Y + + Some keyboards export scroll axes and any absolute axis possible in 11 + dimensions. All these axes are mute, except possibly for the scroll wheels. + + So if a device has a scroll axis, and we're configuring it as mouse, force + the x/y axes into existence. This stops the logspam complaining about not + enough axes on pointer movement after a xrandr change. + + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + Reviewed-by: Chase Douglas <chase.doug...@canonical.com> + (cherry picked from commit f28507e8ce2bd45b51c28f024baebd9711c28fc3) + +commit 4d698d8ece86a8e39b41c03b9b4c427b20b15449 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Thu Mar 15 15:46:32 2012 +1000 @@ -10,6 +166,7 @@ Date: Thu Mar 15 15:46:32 2012 +1000 Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> Reviewed-by: Chase Douglas <chase.doug...@canonical.com> + (cherry picked from commit 99340147b9092a5aaec997eca407282a51e1f063) commit 76b1d58a9791257fa8b4e6d3322fcb082c86b18a Author: Peter Hutterer <peter.hutte...@who-t.net> diff --git a/debian/changelog b/debian/changelog index 558ca06..d12859a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,13 +1,15 @@ -xserver-xorg-input-evdev (1:2.7.0-2) UNRELEASED; urgency=low +xserver-xorg-input-evdev (1:2.7.1-1) UNRELEASED; urgency=low [ Maarten Lankhorst ] * Merge the 1:2.7.0-1 sid upload + Remove upstreamed 0001-configure.ac-Fix-udev-libudev-dependency.patch - * Add upstream bugfix from ubuntu: - - 0006-axis-label-overrun.patch * Add -dbg package for symbols - -- Maarten Lankhorst <maarten.lankho...@canonical.com> Mon, 16 Jul 2012 13:24:29 +0200 + [ Julien Cristau ] + * New upstream bugfix release. + * Pull from upstream evdev-2.7-branch, commit 7469081. + + -- Julien Cristau <jcris...@debian.org> Fri, 03 Aug 2012 12:24:21 +0200 xserver-xorg-input-evdev (1:2.7.0-1) unstable; urgency=low diff --git a/debian/patches/0006-axis-label-overrun.patch b/debian/patches/0006-axis-label-overrun.patch deleted file mode 100644 index df7519e..0000000 --- a/debian/patches/0006-axis-label-overrun.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 4145fe1c087708bf5d6608e328342282ecb93ab0 Mon Sep 17 00:00:00 2001 -From: Chase Douglas <chase.doug...@canonical.com> -Date: Wed, 6 Jun 2012 12:07:12 -0700 -Subject: [PATCH] Fix buffer overrun when populating axis label property array - -The axis label property array currently only has enough elements for the -non-multitouch axes. This change allocates enough space for all axes, -which prevents an array overrun write. This may manifest as stack -corruption on some platforms. - -Signed-off-by: Chase Douglas <chase.doug...@canonical.com> -Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> ---- - src/evdev.c | 8 +++++--- - src/evdev.h | 1 + - 2 files changed, 6 insertions(+), 3 deletions(-) - -diff --git a/src/evdev.c b/src/evdev.c -index 4b86f66..a628273 100644 ---- a/src/evdev.c -+++ b/src/evdev.c -@@ -1304,6 +1304,7 @@ EvdevAddAbsValuatorClass(DeviceIntPtr device) - } - #ifdef MULTITOUCH - if (num_mt_axes_total > 0) { -+ pEvdev->num_mt_vals = num_mt_axes_total; - pEvdev->mt_mask = valuator_mask_new(num_mt_axes_total); - if (!pEvdev->mt_mask) { - xf86Msg(X_ERROR, "%s: failed to allocate MT valuator mask.\n", -@@ -2879,7 +2880,8 @@ EvdevInitProperty(DeviceIntPtr dev) - if ((pEvdev->num_vals > 0) && (prop_axis_label = XIGetKnownProperty(AXIS_LABEL_PROP))) - { - int mode; -- Atom atoms[pEvdev->num_vals]; -+ int num_axes = pEvdev->num_vals + pEvdev->num_mt_vals; -+ Atom atoms[num_axes]; - - if (pEvdev->flags & EVDEV_ABSOLUTE_EVENTS) - mode = Absolute; -@@ -2890,9 +2892,9 @@ EvdevInitProperty(DeviceIntPtr dev) - mode = Absolute; - } - -- EvdevInitAxesLabels(pEvdev, mode, pEvdev->num_vals, atoms); -+ EvdevInitAxesLabels(pEvdev, mode, num_axes, atoms); - XIChangeDeviceProperty(dev, prop_axis_label, XA_ATOM, 32, -- PropModeReplace, pEvdev->num_vals, atoms, FALSE); -+ PropModeReplace, num_axes, atoms, FALSE); - XISetDevicePropertyDeletable(dev, prop_axis_label, FALSE); - } - /* Button labelling */ -diff --git a/src/evdev.h b/src/evdev.h -index 309b215..c2f9246 100644 ---- a/src/evdev.h -+++ b/src/evdev.h -@@ -153,6 +153,7 @@ typedef struct { - int grabDevice; /* grab the event device? */ - - int num_vals; /* number of valuators */ -+ int num_mt_vals; /* number of multitouch valuators */ - int axis_map[max(ABS_CNT, REL_CNT)]; /* Map evdev <axis> to index */ - ValuatorMask *vals; /* new values coming in */ - ValuatorMask *old_vals; /* old values for calculating relative motion */ --- -1.7.9.5 - diff --git a/debian/patches/series b/debian/patches/series index 618ccee..fdffa2a 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1 +1 @@ -0006-axis-label-overrun.patch +# placeholder commit e138911bd329ff048814a2e350c3ab9397c316a5 Author: Julien Cristau <jcris...@debian.org> Date: Fri Aug 3 12:23:35 2012 +0200 Revert build-dep bump, fix up changelog diff --git a/debian/changelog b/debian/changelog index 8c2ead6..558ca06 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,12 +1,10 @@ xserver-xorg-input-evdev (1:2.7.0-2) UNRELEASED; urgency=low [ Maarten Lankhorst ] - * Bump build-dep to xorg 2:1.12.99.901 - * Remove upstreamed 0001-configure.ac-Fix-udev-libudev-dependency.patch + * Merge the 1:2.7.0-1 sid upload + + Remove upstreamed 0001-configure.ac-Fix-udev-libudev-dependency.patch * Add upstream bugfix from ubuntu: - 0006-axis-label-overrun.patch - * Upstream tree includes bugfix commit 99340147 from master, which will show on the - diff.gz. * Add -dbg package for symbols -- Maarten Lankhorst <maarten.lankho...@canonical.com> Mon, 16 Jul 2012 13:24:29 +0200 diff --git a/debian/control b/debian/control index 34eaea7..19708eb 100644 --- a/debian/control +++ b/debian/control @@ -8,7 +8,7 @@ Build-Depends: dh-autoreconf, pkg-config, quilt, - xserver-xorg-dev (>= 2:1.12.99.901), + xserver-xorg-dev (>= 2:1.11.99.901), x11proto-core-dev, x11proto-randr-dev, x11proto-input-dev (>= 2.1.99.3), commit 74690817fcd3e91ea384b8f311d8ce5626d8c409 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Wed Jul 4 09:14:41 2012 +1000 Don't re-open mtdev after PreInit ==16557== 388,240 (3,520 direct, 384,720 indirect) bytes in 10 blocks are definitely lost in loss record 1,669 of 1,671 ==16557== at 0x4A06F18: calloc (vg_replace_malloc.c:566) ==16557== by 0xC3EAD4D: mtdev_new (core.c:345) ==16557== by 0xC3EAE6B: mtdev_new_open (core.c:383) ==16557== by 0xC1E0452: EvdevOpenDevice (evdev.c:2365) ==16557== by 0xC1E068C: EvdevPreInit (evdev.c:2431) ==16557== by 0x4B8304: xf86NewInputDevice (xf86Xinput.c:846) ==16557== by 0x4B8857: NewInputDeviceRequest (xf86Xinput.c:989) ==16557== by 0x4CCB4C: device_added (udev.c:211) ==16557== by 0x4CCFA6: config_udev_init (udev.c:342) ==16557== by 0x4CBE81: config_init (config.c:48) ==16557== by 0x4A8A9A: InitInput (xf86Init.c:918) ==16557== by 0x4921EE: main (main.c:258) After PreInit, the fd and mtdev pointer are still valid. We check for the fd, but unconditionally allocated another mtdev struct for each device. Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> Reviewed-by: Chase Douglas <chase.doug...@canonical.com> (cherry picked from commit 98af2003d48530b2e102cf667a9d40dcb94cb0fe) diff --git a/src/evdev.c b/src/evdev.c index dc3cd89..fc7ba88 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -2354,14 +2354,16 @@ EvdevOpenDevice(InputInfoPtr pInfo) } #ifdef MULTITOUCH - pEvdev->mtdev = mtdev_new_open(pInfo->fd); + if (!pEvdev->mtdev) { /* after PreInit mtdev is still valid */ + pEvdev->mtdev = mtdev_new_open(pInfo->fd); + if (!pEvdev->mtdev) { + xf86Msg(X_ERROR, "%s: Couldn't open mtdev device\n", pInfo->name); + EvdevCloseDevice(pInfo); + return FALSE; + } + } if (pEvdev->mtdev) pEvdev->cur_slot = pEvdev->mtdev->caps.slot.value; - else { - xf86Msg(X_ERROR, "%s: Couldn't open mtdev device\n", pInfo->name); - EvdevCloseDevice(pInfo); - return FALSE; - } #endif /* Check major/minor of device node to avoid adding duplicate devices. */ commit b2cbbb178e9a3650118bdf498e678ca4e12062fe Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Mon May 28 10:08:23 2012 +1000 Constify InputDriverRec->default_options Removes a warning, and with the input ABI 18 this is forced to const in the server. Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> Reviewed-by: Chase Douglas <chase.doug...@canonical.com> (cherry picked from commit 9624f4e2ba7d1973813de066806eed108748a53a) diff --git a/src/evdev.c b/src/evdev.c index 37492b5..dc3cd89 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -93,7 +93,7 @@ #define ABS_MT_TRACKING_ID 0x39 #endif -static char *evdevDefaults[] = { +static const char *evdevDefaults[] = { "XkbRules", "evdev", "XkbModel", "evdev", "XkbLayout", "us", commit 7d91fc7bfcdaaac657aeb7b8876a4002ad0fa68d Author: Marcin Slusarz <marcin.slus...@gmail.com> Date: Mon May 21 01:22:33 2012 +0200 Fix some obvious constness-related compile warnings. Signed-off-by: Marcin Slusarz <marcin.slus...@gmail.com> Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> (cherry picked from commit 2c8da280b3ab635d049784345d025d289348687b) diff --git a/src/emuWheel.c b/src/emuWheel.c index ae894fa..db989c5 100644 --- a/src/emuWheel.c +++ b/src/emuWheel.c @@ -51,7 +51,6 @@ static Atom prop_wheel_timeout = 0; static Atom prop_wheel_button = 0; /* Local Funciton Prototypes */ -static BOOL EvdevWheelEmuHandleButtonMap(InputInfoPtr pInfo, WheelAxisPtr pAxis, char *axis_name); static int EvdevWheelEmuInertia(InputInfoPtr pInfo, WheelAxisPtr axis, int value); /* Filter mouse button events */ @@ -197,7 +196,8 @@ EvdevWheelEmuInertia(InputInfoPtr pInfo, WheelAxisPtr axis, int value) /* Handle button mapping here to avoid code duplication, returns true if a button mapping was found. */ static BOOL -EvdevWheelEmuHandleButtonMap(InputInfoPtr pInfo, WheelAxisPtr pAxis, char* axis_name) +EvdevWheelEmuHandleButtonMap(InputInfoPtr pInfo, WheelAxisPtr pAxis, + const char *axis_name) { EvdevPtr pEvdev = (EvdevPtr)pInfo->private; char *option_string; diff --git a/src/evdev.c b/src/evdev.c index b32d617..37492b5 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -278,7 +278,7 @@ EvdevRemoveDevice(InputInfoPtr pInfo) static void -SetXkbOption(InputInfoPtr pInfo, char *name, char **option) +SetXkbOption(InputInfoPtr pInfo, const char *name, char **option) { char *s; @@ -2566,7 +2566,7 @@ EvdevUtilButtonEventToButtonNumber(EvdevPtr pEvdev, int code) /* Aligned with linux/input.h. Note that there are holes in the ABS_ range, these are simply replaced with MISC here */ -static char* abs_labels[] = { +static const char *abs_labels[] = { AXIS_LABEL_PROP_ABS_X, /* 0x00 */ AXIS_LABEL_PROP_ABS_Y, /* 0x01 */ AXIS_LABEL_PROP_ABS_Z, /* 0x02 */ @@ -2629,7 +2629,7 @@ static char* abs_labels[] = { AXIS_LABEL_PROP_ABS_MT_PRESSURE, /* 0x3a */ }; -static char* rel_labels[] = { +static const char *rel_labels[] = { AXIS_LABEL_PROP_REL_X, AXIS_LABEL_PROP_REL_Y, AXIS_LABEL_PROP_REL_Z, @@ -2642,7 +2642,7 @@ static char* rel_labels[] = { AXIS_LABEL_PROP_REL_MISC }; -static char* btn_labels[][16] = { +static const char *btn_labels[][16] = { { /* BTN_MISC group offset 0x100*/ BTN_LABEL_PROP_BTN_0, /* 0x00 */ BTN_LABEL_PROP_BTN_1, /* 0x01 */ @@ -2727,7 +2727,7 @@ static void EvdevInitAxesLabels(EvdevPtr pEvdev, int mode, int natoms, Atom *ato { Atom atom; int axis; - char **labels; + const char **labels; int labels_len = 0; if (mode == Absolute) commit 09987eab9a77aa94127ecacca41498bc5e83c0eb Author: Daniel Stone <dan...@fooishbar.org> Date: Tue Jul 10 00:34:56 2012 +0100 Fix compilation warnings for non-multitouch builds Signed-off-by: Daniel Stone <dan...@fooishbar.org> Reviewed-by: Chase Douglas <chase.doug...@canonical.com> Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> (cherry picked from commit f5ede98085688b59dc56a9cc6592f75552a4e7ed) diff --git a/src/evdev.c b/src/evdev.c index a12e97b..b32d617 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -1062,7 +1062,9 @@ EvdevProcessEvent(InputInfoPtr pInfo, struct input_event *ev) static void EvdevFreeMasks(EvdevPtr pEvdev) { +#ifdef MULTITOUCH int i; +#endif valuator_mask_free(&pEvdev->vals); valuator_mask_free(&pEvdev->old_vals); @@ -1345,7 +1347,9 @@ EvdevAddAbsValuatorClass(DeviceIntPtr device) i = 0; for (axis = ABS_X; i < MAX_VALUATORS && axis <= ABS_MAX; axis++) { +#ifdef MULTITOUCH int j; +#endif int mapping; pEvdev->axis_map[axis] = -1; if (!EvdevBitIsSet(pEvdev->abs_bitmask, axis) || commit 8af0e6f1ebaf327f735bca507134b34bb24b26c6 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Fri May 25 14:04:22 2012 +1000 strtol doesn't need a empty string, NULL is good enough. Fixes: evdev.c: In function 'EvdevInitButtonMapping': evdev.c:1659:25: warning: initialization discards 'const' qualifier from pointer target type [enabled by default] Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> Reviewed-by: Chase Douglas <chase.doug...@canonical.com> (cherry picked from commit 61faf2e6e70a4c9ecffe638d46829738dc2e3452) diff --git a/src/evdev.c b/src/evdev.c index 56e3b11..a12e97b 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -1660,7 +1660,7 @@ EvdevInitButtonMapping(InputInfoPtr pInfo) /* Check for user-defined button mapping */ if ((mapping = xf86CheckStrOption(pInfo->options, "ButtonMapping", NULL))) { - char *map, *s = " "; + char *map, *s = NULL; int btn = 0; xf86IDrvMsg(pInfo, X_CONFIG, "ButtonMapping '%s'\n", mapping); commit 56e9a7a248d70fd55ecc3588e72d0172d7c9ad27 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Tue Jul 24 14:05:09 2012 +1000 evdev 2.7.1 Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> diff --git a/configure.ac b/configure.ac index dff2bcf..13adec7 100644 --- a/configure.ac +++ b/configure.ac @@ -23,7 +23,7 @@ # Initialize Autoconf AC_PREREQ([2.60]) AC_INIT([xf86-input-evdev], - [2.7.0], + [2.7.1], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [xf86-input-evdev]) AC_CONFIG_SRCDIR([Makefile.am]) commit 7df65237741b167b18ff0962a7bfc3db9d4826ed Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Mon May 28 09:50:15 2012 +1000 Close the fd when mtdev open fails Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> Reviewed-by: Chase Douglas <chase.doug...@canonical.com> (cherry picked from commit 8251d7a8ec00b4160b6601a6f2f4f0f5d461cbee) diff --git a/src/evdev.c b/src/evdev.c index bd8d9b8..56e3b11 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -2355,6 +2355,7 @@ EvdevOpenDevice(InputInfoPtr pInfo) pEvdev->cur_slot = pEvdev->mtdev->caps.slot.value; else { xf86Msg(X_ERROR, "%s: Couldn't open mtdev device\n", pInfo->name); + EvdevCloseDevice(pInfo); return FALSE; } #endif commit f4e76a4c53f2abe0bd737485e0b32d6d36425118 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Mon May 28 09:08:43 2012 +1000 Release mtdev data whenever we close the fd Add a new EvdevCloseDevice() function to unify this. We used to leak data - PreInit allocates mtdev, but nothing except one error path released it. - each DEVICE_ON re-allocates mtdev but it is never released Reported-by: Zdenek Kabelac <zdenek.kabe...@gmail.com> Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> Reviewed-by: Chase Douglas <chase.doug...@canonical.com> (cherry picked from commit ac5173163d7d1e18d47630a397ece0f26b2568c8) diff --git a/src/evdev.c b/src/evdev.c index d7f4492..bd8d9b8 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -119,6 +119,7 @@ static int EvdevSwitchMode(ClientPtr client, DeviceIntPtr device, int mode); static BOOL EvdevGrabDevice(InputInfoPtr pInfo, int grab, int ungrab); static void EvdevSetCalibration(InputInfoPtr pInfo, int num_calibration, int calibration[4]); static int EvdevOpenDevice(InputInfoPtr pInfo); +static void EvdevCloseDevice(InputInfoPtr pInfo); static void EvdevInitAxesLabels(EvdevPtr pEvdev, int mode, int natoms, Atom *atoms); static void EvdevInitButtonLabels(EvdevPtr pEvdev, int natoms, Atom *atoms); @@ -1108,8 +1109,7 @@ EvdevReadInput(InputInfoPtr pInfo) EvdevMBEmuFinalize(pInfo); Evdev3BEmuFinalize(pInfo); xf86RemoveEnabledDevice(pInfo); - close(pInfo->fd); - pInfo->fd = -1; + EvdevCloseDevice(pInfo); } else if (errno != EAGAIN) { /* We use X_NONE here because it doesn't alloc */ @@ -1866,8 +1866,7 @@ EvdevProc(DeviceIntPtr device, int what) { EvdevGrabDevice(pInfo, 0, 1); xf86RemoveEnabledDevice(pInfo); - close(pInfo->fd); - pInfo->fd = -1; + EvdevCloseDevice(pInfo); } pEvdev->min_maj = 0; pEvdev->flags &= ~EVDEV_INITIALIZED; @@ -1876,10 +1875,7 @@ EvdevProc(DeviceIntPtr device, int what) case DEVICE_CLOSE: xf86IDrvMsg(pInfo, X_INFO, "Close\n"); - if (pInfo->fd != -1) { - close(pInfo->fd); - pInfo->fd = -1; - } + EvdevCloseDevice(pInfo); EvdevFreeMasks(pEvdev); EvdevRemoveDevice(pInfo); pEvdev->min_maj = 0; @@ -2368,17 +2364,34 @@ EvdevOpenDevice(InputInfoPtr pInfo) if (EvdevIsDuplicate(pInfo)) { xf86IDrvMsg(pInfo, X_WARNING, "device file is duplicate. Ignoring.\n"); + EvdevCloseDevice(pInfo); + return BadMatch; + } + + return Success; +} + +static void +EvdevCloseDevice(InputInfoPtr pInfo) +{ + EvdevPtr pEvdev = pInfo->private; + if (pInfo->fd >= 0) + { close(pInfo->fd); + pInfo->fd = -1; + } + #ifdef MULTITOUCH + if (pEvdev->mtdev) + { mtdev_close_delete(pEvdev->mtdev); pEvdev->mtdev = NULL; -#endif - return BadMatch; } +#endif - return Success; } + static void EvdevUnInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags) { @@ -2459,8 +2472,7 @@ EvdevPreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags) return Success; error: - if (pInfo->fd >= 0) - close(pInfo->fd); + EvdevCloseDevice(pInfo); return rc; } commit ac772cde9469c406564433d6d41416fa2279fbf9 Author: Chase Douglas <chase.doug...@canonical.com> Date: Wed Jun 6 12:07:12 2012 -0700 Fix buffer overrun when populating axis label property array The axis label property array currently only has enough elements for the non-multitouch axes. This change allocates enough space for all axes, which prevents an array overrun write. This may manifest as stack corruption on some platforms. Signed-off-by: Chase Douglas <chase.doug...@canonical.com> Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> (cherry picked from commit 4145fe1c087708bf5d6608e328342282ecb93ab0) diff --git a/src/evdev.c b/src/evdev.c index 8527eb3..d7f4492 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -1304,6 +1304,7 @@ EvdevAddAbsValuatorClass(DeviceIntPtr device) } #ifdef MULTITOUCH if (num_mt_axes_total > 0) { + pEvdev->num_mt_vals = num_mt_axes_total; pEvdev->mt_mask = valuator_mask_new(num_mt_axes_total); if (!pEvdev->mt_mask) { xf86Msg(X_ERROR, "%s: failed to allocate MT valuator mask.\n", @@ -2879,7 +2880,8 @@ EvdevInitProperty(DeviceIntPtr dev) if ((pEvdev->num_vals > 0) && (prop_axis_label = XIGetKnownProperty(AXIS_LABEL_PROP))) { int mode; - Atom atoms[pEvdev->num_vals]; + int num_axes = pEvdev->num_vals + pEvdev->num_mt_vals; + Atom atoms[num_axes]; if (pEvdev->flags & EVDEV_ABSOLUTE_EVENTS) mode = Absolute; @@ -2890,9 +2892,9 @@ EvdevInitProperty(DeviceIntPtr dev) mode = Absolute; } - EvdevInitAxesLabels(pEvdev, mode, pEvdev->num_vals, atoms); + EvdevInitAxesLabels(pEvdev, mode, num_axes, atoms); XIChangeDeviceProperty(dev, prop_axis_label, XA_ATOM, 32, - PropModeReplace, pEvdev->num_vals, atoms, FALSE); + PropModeReplace, num_axes, atoms, FALSE); XISetDevicePropertyDeletable(dev, prop_axis_label, FALSE); } /* Button labelling */ diff --git a/src/evdev.h b/src/evdev.h index 309b215..c2f9246 100644 --- a/src/evdev.h +++ b/src/evdev.h @@ -153,6 +153,7 @@ typedef struct { int grabDevice; /* grab the event device? */ int num_vals; /* number of valuators */ + int num_mt_vals; /* number of multitouch valuators */ int axis_map[max(ABS_CNT, REL_CNT)]; /* Map evdev <axis> to index */ ValuatorMask *vals; /* new values coming in */ ValuatorMask *old_vals; /* old values for calculating relative motion */ commit 774915924102c348ce7045ffa07905d1079f447c Author: Chase Douglas <chase.doug...@canonical.com> Date: Thu May 24 10:48:38 2012 -0700 Report the correct number of touches for MT protocol B devices Protocol B devices report the number of touches by giving a maximum and minimum slot value. The current code ignores the minimum value, which is usually 0, and underreports the number of touches by 1. Signed-off-by: Chase Douglas <chase.doug...@canonical.com> Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> (cherry picked from commit 9ce068e760e1282183c7aa1b4cc6b0fcb6b494dd) diff --git a/src/evdev.c b/src/evdev.c index 140a633..8527eb3 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -1384,7 +1384,8 @@ EvdevAddAbsValuatorClass(DeviceIntPtr device) XIDependentTouch : XIDirectTouch; if (pEvdev->mtdev->caps.slot.maximum > 0) - num_touches = pEvdev->mtdev->caps.slot.maximum; + num_touches = pEvdev->mtdev->caps.slot.maximum - + pEvdev->mtdev->caps.slot.minimum + 1; if (!InitTouchClassDeviceStruct(device, num_touches, mode, num_mt_axes_total)) { commit 833fc517d75934797bdadbf043b18a1c94fc1293 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Fri Apr 27 15:42:17 2012 +1000 Devices configured as mice need REL_X/Y Some keyboards export scroll axes and any absolute axis possible in 11 dimensions. All these axes are mute, except possibly for the scroll wheels. So if a device has a scroll axis, and we're configuring it as mouse, force the x/y axes into existence. This stops the logspam complaining about not enough axes on pointer movement after a xrandr change. Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> Reviewed-by: Chase Douglas <chase.doug...@canonical.com> (cherry picked from commit f28507e8ce2bd45b51c28f024baebd9711c28fc3) diff --git a/src/evdev.c b/src/evdev.c index 8cf630c..140a633 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -2271,6 +2271,9 @@ EvdevProbe(InputInfoPtr pInfo) xf86IDrvMsg(pInfo, X_INFO, "Configuring as touchscreen\n"); pInfo->type_name = XI_TOUCHSCREEN; } else { + if (!EvdevBitIsSet(pEvdev->rel_bitmask, REL_X) || + !EvdevBitIsSet(pEvdev->rel_bitmask, REL_Y)) + EvdevForceXY(pInfo, Relative); xf86IDrvMsg(pInfo, X_INFO, "Configuring as mouse\n"); pInfo->type_name = XI_MOUSE; } commit 4d698d8ece86a8e39b41c03b9b4c427b20b15449 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Thu Mar 15 15:46:32 2012 +1000 Fix inverted horizontal scroll (#46205) REL_HWHEEL has a positive increment, not a negative one like REL_WHEEL. X.Org Bug 46205 <http://bugs.freedesktop.org/show_bug.cgi?id=46205> Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> Reviewed-by: Chase Douglas <chase.doug...@canonical.com> (cherry picked from commit 99340147b9092a5aaec997eca407282a51e1f063) diff --git a/src/evdev.c b/src/evdev.c index d540b87..8cf630c 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -1600,7 +1600,7 @@ EvdevAddRelValuatorClass(DeviceIntPtr device) else if (axis == REL_DIAL) SetScrollValuator(device, axnum, SCROLL_TYPE_VERTICAL, -1.0, SCROLL_FLAG_NONE); else if (axis == REL_HWHEEL) - SetScrollValuator(device, axnum, SCROLL_TYPE_HORIZONTAL, -1.0, SCROLL_FLAG_NONE); + SetScrollValuator(device, axnum, SCROLL_TYPE_HORIZONTAL, 1.0, SCROLL_FLAG_NONE); #endif } -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/e1sxfhf-0001ri...@vasks.debian.org