Hello community, here is the log from the commit of package xf86-input-evdev for openSUSE:Factory checked in at 2014-06-02 07:04:13 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/xf86-input-evdev (Old) and /work/SRC/openSUSE:Factory/.xf86-input-evdev.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "xf86-input-evdev" Changes: -------- --- /work/SRC/openSUSE:Factory/xf86-input-evdev/xf86-input-evdev.changes 2014-05-10 08:32:10.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.xf86-input-evdev.new/xf86-input-evdev.changes 2014-06-02 07:04:14.000000000 +0200 @@ -1,0 +2,6 @@ +Tue May 20 22:52:33 UTC 2014 - tobias.johannes.klausmann@mni.thm.de + +- Update to version 2.9.0: + Use the server's device list for duplicate detection (FDO#78309) + +------------------------------------------------------------------- Old: ---- xf86-input-evdev-2.8.99.1.tar.bz2 New: ---- xf86-input-evdev-2.9.0.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xf86-input-evdev.spec ++++++ --- /var/tmp/diff_new_pack.TpXhpR/_old 2014-06-02 07:04:14.000000000 +0200 +++ /var/tmp/diff_new_pack.TpXhpR/_new 2014-06-02 07:04:14.000000000 +0200 @@ -17,7 +17,7 @@ Name: xf86-input-evdev -Version: 2.8.99.1 +Version: 2.9.0 Release: 0 Summary: Generic Linux input driver for the Xorg X server License: MIT ++++++ xf86-input-evdev-2.8.99.1.tar.bz2 -> xf86-input-evdev-2.9.0.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xf86-input-evdev-2.8.99.1/ChangeLog new/xf86-input-evdev-2.9.0/ChangeLog --- old/xf86-input-evdev-2.8.99.1/ChangeLog 2014-04-29 02:22:16.000000000 +0200 +++ new/xf86-input-evdev-2.9.0/ChangeLog 2014-05-20 07:42:19.000000000 +0200 @@ -1,3 +1,34 @@ +commit 5d239ceb260cd554245e8f0dc3627990726ea9b9 +Author: Peter Hutterer <peter.hutterer@who-t.net> +Date: Thu May 15 08:41:06 2014 +1000 + + evdev 2.9.0 + + Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> + +commit 13dea90bc8ef2a2e6f55fb5ff5f54afe41d22f95 +Author: Peter Hutterer <peter.hutterer@who-t.net> +Date: Tue May 6 09:20:05 2014 +1000 + + Use the server's device list for duplicate detection (#78309) + + EvdevAddDevice/EvdevRemoveDevice keep a reference to the device to detect + duplicate devices based on the dev_t. + + EvdevAddDevices was called during PreInit, EvdevRemoveDevice was called during + DEVICE_CLOSE. That makes it imbalanced if the device succeeds PreInit but the + server skips everything else because MAX_DEVICES is exceeded. So for all + devices after MAX_DEVICES, we'd add a reference but never remove it, + eventually reading/writing past evdev_devices. + + The server keeps the list of devices for us anyway, so remove the copy of all + the pointers and instead run through the device list the server gives us. + + X.Org Bug 78309 http://bugs.freedesktop.org/show_bug.cgi?id=78309 + + Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> + Reviewed-by: Hans de Goede <hdegoede@redhat.com> + commit b25d71616557b0f3fc5e1ca65ba9e62809d14139 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Tue Apr 29 10:20:42 2014 +1000 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xf86-input-evdev-2.8.99.1/configure new/xf86-input-evdev-2.9.0/configure --- old/xf86-input-evdev-2.8.99.1/configure 2014-04-29 02:21:19.000000000 +0200 +++ new/xf86-input-evdev-2.9.0/configure 2014-05-20 07:41:52.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for xf86-input-evdev 2.8.99.1. +# Generated by GNU Autoconf 2.69 for xf86-input-evdev 2.9.0. # # Report bugs to https://bugs.freedesktop.org/enter_bug.cgi?product=xorg. # @@ -591,8 +591,8 @@ # Identity of this package. PACKAGE_NAME='xf86-input-evdev' PACKAGE_TARNAME='xf86-input-evdev' -PACKAGE_VERSION='2.8.99.1' -PACKAGE_STRING='xf86-input-evdev 2.8.99.1' +PACKAGE_VERSION='2.9.0' +PACKAGE_STRING='xf86-input-evdev 2.9.0' PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg' PACKAGE_URL='' @@ -1363,7 +1363,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -`configure' configures xf86-input-evdev 2.8.99.1 to adapt to many kinds of systems. +`configure' configures xf86-input-evdev 2.9.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1434,7 +1434,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of xf86-input-evdev 2.8.99.1:";; + short | recursive ) echo "Configuration of xf86-input-evdev 2.9.0:";; esac cat <<_ACEOF @@ -1567,7 +1567,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<_ACEOF -xf86-input-evdev configure 2.8.99.1 +xf86-input-evdev configure 2.9.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1891,7 +1891,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by xf86-input-evdev $as_me 2.8.99.1, which was +It was created by xf86-input-evdev $as_me 2.9.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2759,7 +2759,7 @@ # Define the identity of the package. PACKAGE='xf86-input-evdev' - VERSION='2.8.99.1' + VERSION='2.9.0' cat >>confdefs.h <<_ACEOF @@ -18640,7 +18640,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by xf86-input-evdev $as_me 2.8.99.1, which was +This file was extended by xf86-input-evdev $as_me 2.9.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -18706,7 +18706,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\""`$]/\\&/g'`" ac_cs_version="\ -xf86-input-evdev config.status 2.8.99.1 +xf86-input-evdev config.status 2.9.0 configured by $0, generated by GNU Autoconf 2.69, with options \"$ac_cs_config\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xf86-input-evdev-2.8.99.1/configure.ac new/xf86-input-evdev-2.9.0/configure.ac --- old/xf86-input-evdev-2.8.99.1/configure.ac 2014-04-29 02:20:50.000000000 +0200 +++ new/xf86-input-evdev-2.9.0/configure.ac 2014-05-20 07:41:26.000000000 +0200 @@ -23,7 +23,7 @@ # Initialize Autoconf AC_PREREQ([2.60]) AC_INIT([xf86-input-evdev], - [2.8.99.1], + [2.9.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [xf86-input-evdev]) AC_CONFIG_SRCDIR([Makefile.am]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xf86-input-evdev-2.8.99.1/src/evdev.c new/xf86-input-evdev-2.9.0/src/evdev.c --- old/xf86-input-evdev-2.8.99.1/src/evdev.c 2014-04-29 02:21:13.000000000 +0200 +++ new/xf86-input-evdev-2.9.0/src/evdev.c 2014-05-20 07:41:26.000000000 +0200 @@ -68,11 +68,6 @@ /* removed from server, purge when dropping support for server 1.10 */ #define XI86_SEND_DRAG_EVENTS 0x08 -#ifndef MAXDEVICES -#include <inputstr.h> /* for MAX_DEVICES */ -#define MAXDEVICES MAX_DEVICES -#endif - #define ArrayLength(a) (sizeof(a) / (sizeof((a)[0]))) #define MIN_KEYCODE 8 @@ -146,11 +141,6 @@ static Atom prop_virtual; static Atom prop_scroll_dist; -/* All devices the evdev driver has allocated and knows about. - * MAXDEVICES is safe as null-terminated array, as two devices (VCP and VCK) - * cannot be used by evdev, leaving us with a space of 2 at the end. */ -static EvdevPtr evdev_devices[MAXDEVICES] = {NULL}; - static int EvdevSwitchMode(ClientPtr client, DeviceIntPtr device, int mode) { InputInfoPtr pInfo; @@ -216,58 +206,23 @@ EvdevIsDuplicate(InputInfoPtr pInfo) { EvdevPtr pEvdev = pInfo->private; - EvdevPtr* dev = evdev_devices; + InputInfoPtr d; - if (pEvdev->min_maj) + nt_list_for_each_entry(d, xf86FirstLocalDevice(), next) { - while(*dev) - { - if ((*dev) != pEvdev && - (*dev)->min_maj && - (*dev)->min_maj == pEvdev->min_maj) - return TRUE; - dev++; - } - } - return FALSE; -} + EvdevPtr e; -/** - * Add to internal device list. - */ -static void -EvdevAddDevice(InputInfoPtr pInfo) -{ - EvdevPtr pEvdev = pInfo->private; - EvdevPtr* dev = evdev_devices; - - while(*dev) - dev++; - - *dev = pEvdev; -} - -/** - * Remove from internal device list. - */ -static void -EvdevRemoveDevice(InputInfoPtr pInfo) -{ - EvdevPtr pEvdev = pInfo->private; - EvdevPtr *dev = evdev_devices; - int count = 0; + if (strcmp(d->drv->driverName, "evdev") != 0) + continue; - while(*dev) - { - count++; - if (*dev == pEvdev) - { - memmove(dev, dev + 1, - sizeof(evdev_devices) - (count * sizeof(EvdevPtr))); - break; - } - dev++; + e = (EvdevPtr)d->private; + if (e != pEvdev && + e->min_maj && + e->min_maj == pEvdev->min_maj) + return TRUE; } + + return FALSE; } static BOOL @@ -2026,7 +1981,6 @@ xf86IDrvMsg(pInfo, X_INFO, "Close\n"); EvdevCloseDevice(pInfo); EvdevFreeMasks(pEvdev); - EvdevRemoveDevice(pInfo); pEvdev->min_maj = 0; break; @@ -2659,8 +2613,6 @@ pInfo->type_name); pInfo->type_name = pEvdev->type_name; - EvdevAddDevice(pInfo); - if (pEvdev->flags & EVDEV_BUTTON_EVENTS) { EvdevMBEmuPreInit(pInfo); -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org