[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xserver-xorg-input-evdev: Changes to 'upstream-experimental'



 configure.ac  |    2 +-
 man/evdev.man |    2 +-
 src/emuMB.c   |    5 +++++
 src/evdev.c   |   28 +++++++++++++++-------------
 src/evdev.h   |   32 +++++++++++++++++++++++++-------
 5 files changed, 47 insertions(+), 22 deletions(-)

New commits:
commit 11d506dce6363525e80eda219aee8af429fb302e
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue Jan 13 11:32:05 2009 +1000

    evdev 2.1.1

diff --git a/configure.ac b/configure.ac
index f668d1e..28294e6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@
 
 AC_PREREQ(2.57)
 AC_INIT([xf86-input-evdev],
-        2.1.0,
+        2.1.1,
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         xf86-input-evdev)
 

commit a34a2cd3476441f29c9faa79ffa9289dbf2eebf4
Author: Michael Chapman <mike@very.puzzling.org>
Date:   Fri Jan 9 19:07:10 2009 +1100

    Disable middle mouse button emulation when a middle mouse button event is registered
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    (cherry picked from commit 0592d97fbb5a1241ee79397ce9203346d050a9f9)

diff --git a/src/emuMB.c b/src/emuMB.c
index e5a767a..028d27f 100644
--- a/src/emuMB.c
+++ b/src/emuMB.c
@@ -231,6 +231,11 @@ EvdevMBEmuFilterEvent(InputInfoPtr pInfo, int button, BOOL press)
     if (!pEvdev->emulateMB.enabled)
         return ret;
 
+    if (button == 2) {
+        EvdevMBEmuEnable(pInfo, FALSE);
+        return ret;
+    }
+
     /* don't care about other buttons */
     if (button != 1 && button != 3)
         return ret;

commit 78c00bd77f983aa22611c9966fbcb7e22453b588
Author: Matt Helsley <matt.helsley@gmail.com>
Date:   Tue Jan 13 11:03:04 2009 +1000

    Fix FOO_MAX off-by-one
    
    In linux/input.h each section's (e.g. ABS) FOO_MAX is the maximum FOO
    value. Recent kernels define FOO_CNT as the maximum number of FOO there
    will ever be. Hence using FOO_MAX to size the bit vectors representing
    the capabilities of an evdev device is off by one.
    
    Define FOO_CNT values for use with Linux kernels which lack them. Use
    FOO_CNT whenever we need to know the number of bits needed -- usually to
    calculate the number of longs needed.
    
    When iterating over the values FOO_MAX still seems appropriate however
    the loop test should include FOO_MAX rather than skip it.
    
    Signed-off-by: Matt Helsley <matt.helsley@gmail.com>
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    (cherry picked from commit 4dfd86b2201b2b19761a1abb3c580cecf0060224)
    
    Conflicts:
    
    	src/evdev.c

diff --git a/src/evdev.c b/src/evdev.c
index e48edd9..5601caa 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -236,7 +236,7 @@ static void
 PostKbdEvent(InputInfoPtr pInfo, struct input_event *ev, int value)
 {
     int code = ev->code + MIN_KEYCODE;
-    static char warned[KEY_MAX];
+    static char warned[KEY_CNT];
 
     /* filter repeat events for chording keys */
     if (value == 2 &&
@@ -248,7 +248,7 @@ PostKbdEvent(InputInfoPtr pInfo, struct input_event *ev, int value)
          ev->code == KEY_SCROLLLOCK)) /* XXX windows keys? */
         return;
 
-    if (code > 255 && ev->code < KEY_MAX) {
+    if (code > 255 && ev->code <= KEY_MAX) {
 	if (!warned[ev->code])
 	    xf86Msg(X_WARNING, "%s: unable to handle keycode %d\n",
 		    pInfo->name, ev->code);
@@ -1202,12 +1202,12 @@ EvdevCacheCompare(InputInfoPtr pInfo, BOOL compare)
     int i;
 
     char name[1024]                  = {0};
-    long bitmask[NLONGS(EV_MAX)]      = {0};
-    long key_bitmask[NLONGS(KEY_MAX)] = {0};
-    long rel_bitmask[NLONGS(REL_MAX)] = {0};
-    long abs_bitmask[NLONGS(ABS_MAX)] = {0};
-    long led_bitmask[NLONGS(LED_MAX)] = {0};
-    struct input_absinfo absinfo[ABS_MAX];
+    long bitmask[NLONGS(EV_CNT)]      = {0};
+    long key_bitmask[NLONGS(KEY_CNT)] = {0};
+    long rel_bitmask[NLONGS(REL_CNT)] = {0};
+    long abs_bitmask[NLONGS(ABS_CNT)] = {0};
+    long led_bitmask[NLONGS(LED_CNT)] = {0};
+    struct input_absinfo absinfo[ABS_CNT];
 
     if (ioctl(pInfo->fd,
               EVIOCGNAME(sizeof(name) - 1), name) < 0) {
@@ -1266,7 +1266,7 @@ EvdevCacheCompare(InputInfoPtr pInfo, BOOL compare)
 
     memset(absinfo, 0, sizeof(absinfo));
 
-    for (i = 0; i < ABS_MAX; i++)
+    for (i = ABS_X; i <= ABS_MAX; i++)
     {
         if (TestBit(i, abs_bitmask))
         {
@@ -1302,9 +1302,9 @@ error:
 static int
 EvdevProbe(InputInfoPtr pInfo)
 {
-    long key_bitmask[NLONGS(KEY_MAX)] = {0};
-    long rel_bitmask[NLONGS(REL_MAX)] = {0};
-    long abs_bitmask[NLONGS(ABS_MAX)] = {0};
+    long key_bitmask[NLONGS(KEY_CNT)] = {0};
+    long rel_bitmask[NLONGS(REL_CNT)] = {0};
+    long abs_bitmask[NLONGS(ABS_CNT)] = {0};
     int i, has_axes, has_keys, num_buttons;
     int kernel24 = 0;
     EvdevPtr pEvdev = pInfo->private;
diff --git a/src/evdev.h b/src/evdev.h
index 107dc77..cdbc87d 100644
--- a/src/evdev.h
+++ b/src/evdev.h
@@ -40,6 +40,22 @@
 #include <xkbstr.h>
 #endif
 
+#ifndef EV_CNT /* linux 2.4 kernels and earlier lack _CNT defines */
+#define EV_CNT (EV_MAX+1)
+#endif
+#ifndef KEY_CNT
+#define KEY_CNT (KEY_MAX+1)
+#endif
+#ifndef REL_CNT
+#define REL_CNT (REL_MAX+1)
+#endif
+#ifndef ABS_CNT
+#define ABS_CNT (ABS_MAX+1)
+#endif
+#ifndef LED_CNT
+#define LED_CNT (LED_MAX+1)
+#endif
+
 #define EVDEV_MAXBUTTONS 32
 
 #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 3
@@ -122,12 +138,12 @@ typedef struct {
 
     /* Cached info from device. */
     char name[1024];
-    long bitmask[NLONGS(EV_MAX)];
-    long key_bitmask[NLONGS(KEY_MAX)];
-    long rel_bitmask[NLONGS(REL_MAX)];
-    long abs_bitmask[NLONGS(ABS_MAX)];
-    long led_bitmask[NLONGS(LED_MAX)];
-    struct input_absinfo absinfo[ABS_MAX];
+    long bitmask[NLONGS(EV_CNT)];
+    long key_bitmask[NLONGS(KEY_CNT)];
+    long rel_bitmask[NLONGS(REL_CNT)];
+    long abs_bitmask[NLONGS(ABS_CNT)];
+    long led_bitmask[NLONGS(LED_CNT)];
+    struct input_absinfo absinfo[ABS_CNT];
 
     /* minor/major number */
     dev_t min_maj;

commit 760f1c6bb184e3b48ca6a6bfe8942d306f378148
Author: Matt Helsley <matt.helsley@gmail.com>
Date:   Sun Jan 11 18:04:40 2009 -0800

    rename NBITS to NLONGS to reflect its actual meaning
    
    NBITS really convers the number of bits passed as its argument
    into a number of longs. This is somewhat atypical of many
    function-like-macro names. Rename it to NLONGS.
    
    Signed-off-by: Matt Helsley <matt.helsley@gmail.com>
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    
    (cherry-picked from commit d3fd42d8644310abcae23bbf534f8c445296bcb7)
    Not really required, but it makes cherry-picking
    4dfd86b2201b2b19761a1abb3c580cecf0060224 easier.

diff --git a/src/evdev.c b/src/evdev.c
index 2c73c67..e48edd9 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -1202,11 +1202,11 @@ EvdevCacheCompare(InputInfoPtr pInfo, BOOL compare)
     int i;
 
     char name[1024]                  = {0};
-    long bitmask[NBITS(EV_MAX)]      = {0};
-    long key_bitmask[NBITS(KEY_MAX)] = {0};
-    long rel_bitmask[NBITS(REL_MAX)] = {0};
-    long abs_bitmask[NBITS(ABS_MAX)] = {0};
-    long led_bitmask[NBITS(LED_MAX)] = {0};
+    long bitmask[NLONGS(EV_MAX)]      = {0};
+    long key_bitmask[NLONGS(KEY_MAX)] = {0};
+    long rel_bitmask[NLONGS(REL_MAX)] = {0};
+    long abs_bitmask[NLONGS(ABS_MAX)] = {0};
+    long led_bitmask[NLONGS(LED_MAX)] = {0};
     struct input_absinfo absinfo[ABS_MAX];
 
     if (ioctl(pInfo->fd,
@@ -1302,9 +1302,9 @@ error:
 static int
 EvdevProbe(InputInfoPtr pInfo)
 {
-    long key_bitmask[NBITS(KEY_MAX)] = {0};
-    long rel_bitmask[NBITS(REL_MAX)] = {0};
-    long abs_bitmask[NBITS(ABS_MAX)] = {0};
+    long key_bitmask[NLONGS(KEY_MAX)] = {0};
+    long rel_bitmask[NLONGS(REL_MAX)] = {0};
+    long abs_bitmask[NLONGS(ABS_MAX)] = {0};
     int i, has_axes, has_keys, num_buttons;
     int kernel24 = 0;
     EvdevPtr pEvdev = pInfo->private;
diff --git a/src/evdev.h b/src/evdev.h
index af88741..107dc77 100644
--- a/src/evdev.h
+++ b/src/evdev.h
@@ -47,7 +47,9 @@
 #endif
 
 #define LONG_BITS (sizeof(long) * 8)
-#define NBITS(x) (((x) + LONG_BITS - 1) / LONG_BITS)
+
+/* Number of longs needed to hold the given number of bits */
+#define NLONGS(x) (((x) + LONG_BITS - 1) / LONG_BITS)
 
 /* axis specific data for wheel emulation */
 typedef struct {
@@ -120,11 +122,11 @@ typedef struct {
 
     /* Cached info from device. */
     char name[1024];
-    long bitmask[NBITS(EV_MAX)];
-    long key_bitmask[NBITS(KEY_MAX)];
-    long rel_bitmask[NBITS(REL_MAX)];
-    long abs_bitmask[NBITS(ABS_MAX)];
-    long led_bitmask[NBITS(LED_MAX)];
+    long bitmask[NLONGS(EV_MAX)];
+    long key_bitmask[NLONGS(KEY_MAX)];
+    long rel_bitmask[NLONGS(REL_MAX)];
+    long abs_bitmask[NLONGS(ABS_MAX)];
+    long led_bitmask[NLONGS(LED_MAX)];
     struct input_absinfo absinfo[ABS_MAX];
 
     /* minor/major number */

commit 2db04ba3c35e4976b34d92f8f7c6c2c9ec09f3ab
Author: Alan Coopersmith <alan.coopersmith@sun.com>
Date:   Fri Jan 9 16:13:09 2009 -0800

    Remove xorgconfig & xorgcfg from See Also list in man page
    (cherry picked from commit 0f0a149067abdd1ed89717de43febe89b2a3490b)

diff --git a/man/evdev.man b/man/evdev.man
index cf087e8..c38a2c2 100644
--- a/man/evdev.man
+++ b/man/evdev.man
@@ -201,5 +201,5 @@ server, such as touchscreens that require run-time calibration.
 .SH AUTHORS
 Kristian Høgsberg.
 .SH "SEE ALSO"
-__xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), xorgconfig(__appmansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__),
+__xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__),
 README.mouse.

commit 363d0bdb9fcae7f57f53c50667429ac9b37d41cc
Author: Yan Li <yan.i.li@intel.com>
Date:   Mon Jan 5 16:35:09 2009 +0800

    Fix XkbModel parsing error
    
    Signed-off-by: Yan Li <yan.i.li@intel.com>
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    (cherry picked from commit d170cba0cdd8f7a2e500e094f5b21fc33aefb52a)

diff --git a/src/evdev.c b/src/evdev.c
index 921f9ff..2c73c67 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -854,7 +854,7 @@ EvdevAddKeyClass(DeviceIntPtr device)
         SetXkbOption(pInfo, "xkb_rules", &pEvdev->xkb_rules);
         SetXkbOption(pInfo, "xkb_model", &pEvdev->xkb_model);
 	if (!pEvdev->xkb_model)
-	    SetXkbOption(pInfo, "XkbModel", &pEvdev->xkb_rules);
+	    SetXkbOption(pInfo, "XkbModel", &pEvdev->xkb_model);
         SetXkbOption(pInfo, "xkb_layout", &pEvdev->xkb_layout);
 	if (!pEvdev->xkb_layout)
 	    SetXkbOption(pInfo, "XkbLayout", &pEvdev->xkb_layout);

commit 16a26a1eca6395284fcb8e62be7b2bc30becb0d3
Author: Peter Hutterer <peter.hutterer@redhat.com>
Date:   Wed Nov 26 15:01:57 2008 +1000

    Finalize MB emu (and wakeup handlers) before closing the fd.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com>
    (cherry picked from commit 2bf6e29b40f0da2bc417964fd2bd819306e5d3ed)

diff --git a/src/evdev.c b/src/evdev.c
index 25325a3..921f9ff 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -1150,6 +1150,8 @@ EvdevProc(DeviceIntPtr device, int what)
         return EvdevOn(device);
 
     case DEVICE_OFF:
+        if (pEvdev->flags & EVDEV_INITIALIZED)
+            EvdevMBEmuFinalize(pInfo);
         if (pInfo->fd != -1)
         {
             if (pEvdev->grabDevice && ioctl(pInfo->fd, EVIOCGRAB, (void *)0))


Reply to: