configure.ac                     |    4 
 include/X11/extensions/XInput2.h |   47 +++++++++
 man/Makefile.am                  |    9 +
 man/XGetDeviceControl.txt        |   12 +-
 man/XIBarrierReleasePointer.txt  |   76 ++++++++++++++++
 man/XIGrabButton.txt             |    3 
 man/XIQueryVersion.txt           |    6 +
 src/Makefile.am                  |    3 
 src/XExtInt.c                    |  185 ++++++++++++++++++++++++++++-----------
 src/XGetFCtl.c                   |   14 +-
 src/XIBarrier.c                  |   81 +++++++++++++++++
 src/XIQueryVersion.c             |    6 -
 src/XIint.h                      |    2 
 src/XListDev.c                   |    3 
 14 files changed, 378 insertions(+), 73 deletions(-)

New commits:
commit db3b9ba3404f6d128e7826aa489a34fd206b20ea
Author: Peter Hutterer <peter.hutte...@who-t.net>
Date:   Wed Dec 26 15:29:43 2012 +1000

    libXi 1.6.99.1
    
    Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net>

diff --git a/configure.ac b/configure.ac
index e79fe12..d2af70f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,7 @@
 
 # Initialize Autoconf
 AC_PREREQ([2.60])
-AC_INIT([libXi], [1.6.99],
+AC_INIT([libXi], [1.6.99.1],
        [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [libXi])
 AC_CONFIG_SRCDIR([Makefile.am])
 AC_CONFIG_HEADERS([src/config.h])

commit 9e8a55dfcb3dc2b42cd7e08e8e6e65ea1dd54251
Author: Peter Hutterer <peter.hutte...@who-t.net>
Date:   Fri Dec 7 15:47:41 2012 +1000

    man: add man-page for XIBarrierReleasePointer
    
    Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net>

diff --git a/man/Makefile.am b/man/Makefile.am
index af63952..b92d486 100644
--- a/man/Makefile.am
+++ b/man/Makefile.am
@@ -25,6 +25,7 @@ libmandir = $(LIB_MAN_DIR)
 
 # Source files for X Input v2 man pages
 XI2_txt =                                      \
+       XIBarrierReleasePointer.txt             \
        XIChangeHierarchy.txt                   \
        XIDefineCursor.txt                      \
        XIGrabButton.txt                        \
@@ -76,6 +77,7 @@ libman_xml = $(libman_txt:.txt=.xml)
 # They are created by the xmlto command when generating man pages from DocBook
 # The shadow man page contains a gtroff .so request to include the main man 
page
 XI2_shadows =                                  \
+       XIBarrierReleasePointers.man            \
        XIUndefineCursor.man                    \
        XIUngrabButton.man                      \
        XIGrabKeycode.man                       \
@@ -152,6 +154,7 @@ XIDeleteProperty.man: XIChangeProperty.man
 XIUngrabEnter.man XIGrabFocusIn.man XIUngrabFocusIn.man: XIGrabEnter.man
 XIGetSelectedEvents.man: XISelectEvents.man
 XIFreeDeviceInfo.man: XIQueryDevice.man
+XIBarrierReleasePointers.man: XIBarrierReleasePointer.man
 
 # String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
 # Unable to use __libmansuffix__ as underscores are lost in txt --> xml 
conversion
diff --git a/man/XIBarrierReleasePointer.txt b/man/XIBarrierReleasePointer.txt
new file mode 100644
index 0000000..4fa48fe
--- /dev/null
+++ b/man/XIBarrierReleasePointer.txt
@@ -0,0 +1,76 @@
+XIBARRIERRELEASEPOINTER(libmansuffix)
+=====================================
+
+NAME
+----
+
+   XIBarrierReleasePointer, XIBarrierReleasePointers - allow pointer movement 
across a pointer barrier
+
+SYNOPSIS
+--------
+
+   #include <X11/extensions/XInput2.h>
+
+   int XIBarrierReleasePointer( Display *display,
+                                int deviceid,
+                                PointerBarrier barrier,
+                                BarrierEventID eventid);
+
+   int XIBarrierReleasePointers( Display *display,
+                                 XIBarrierReleasePointerInfo *barriers,
+                                 int num_barriers);
+
+   display
+          Specifies the connection to the X server.
+
+   deviceid
+          Specifies the device allowed to move across the barrier.
+
+   barrier
+          Specifies the barrier.
+
+   eventid
+          Specifies the unique event ID for this barrier event sequence.
+
+   barriers
+          List of deviceid, barrier, eventid triplets.
+
+   num_barriers
+          Number of elements in barriers.
+
+DESCRIPTION
+-----------
+
+   If a pointer is constrained by a pointer barrier, release the pointer
+   from the barrier and allow it to cross the barrier with the next motion.
+   If the pointer moves away from the barrier, this request does nothing.
+
+   This request only releases the pointer for the given barrier event
+   sequence. If the pointer moves away from or through the barrier, a
+   XI_BarrierLeave event is generated. Future pointer movement constrained
+   by this barrier will assign a new eventid and require a new
+   XIBarrierReleasePointer request.
+
+   If the pointer is not currently blocked by the barrier or the barrier
+   event sequence has ended, this request does nothing.
+
+   XIBarrierReleasePointer and XIBarrierReleasePointers can generate a
+   BadDevice or BadValue error.
+
+DIAGNOSTICS
+-----------
+
+   BadDevice
+          An invalid device was specified. The device does not
+          exist or is not a master pointer device.
+
+   BadValue
+          A value for a PointerBarrier argument does not name a defined
+          pointer barrier.
+
+See also
+--------
+
+   XFixesCreatePointerBarrier(libmansuffix)
+
+

commit 60d7386a1b98cc7760d55d6df1f90e6259d122fa
Author: Jasper St. Pierre <jstpie...@mecheye.net>
Date:   Thu Nov 1 17:00:19 2012 -0400

    Add support for pointer barrier events
    
    Signed-off-by: Jasper St. Pierre <jstpie...@mecheye.net>
    Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net>

diff --git a/configure.ac b/configure.ac
index 0f8ff43..e79fe12 100644
--- a/configure.ac
+++ b/configure.ac
@@ -28,7 +28,7 @@ XORG_WITH_ASCIIDOC(8.4.5)
 XORG_CHECK_MALLOC_ZERO
 
 # Obtain compiler/linker options for dependencies
-PKG_CHECK_MODULES(XI, [xproto >= 7.0.13] [x11 >= 1.4.99.1] [xextproto >= 
7.0.3] [xext >= 1.0.99.1] [inputproto >= 2.1.99.6])
+PKG_CHECK_MODULES(XI, [xproto >= 7.0.13] [x11 >= 1.4.99.1] [xextproto >= 
7.0.3] [xext >= 1.0.99.1] [inputproto >= 2.2.99.1])
 
 # Check for xmlto and asciidoc for man page conversion
 # (only needed by people building tarballs)
diff --git a/include/X11/extensions/XInput2.h b/include/X11/extensions/XInput2.h
index 26de695..a746012 100644
--- a/include/X11/extensions/XInput2.h
+++ b/include/X11/extensions/XInput2.h
@@ -169,6 +169,16 @@ typedef struct
     int                 status;
 } XIGrabModifiers;
 
+typedef XID PointerBarrier;
+typedef unsigned int BarrierEventID;
+
+typedef struct
+{
+    int                 deviceid;
+    PointerBarrier      barrier;
+    BarrierEventID      eventid;
+} XIBarrierReleasePointerInfo;
+
 /**
  * Generic XI2 event. All XI2 events have the same header.
  */
@@ -328,6 +338,28 @@ typedef struct {
     int           flags;
 } XITouchOwnershipEvent;
 
+typedef struct {
+    int           type;         /* GenericEvent */
+    unsigned long serial;       /* # of last request processed by server */
+    Bool          send_event;   /* true if this came from a SendEvent request 
*/
+    Display       *display;     /* Display the event was read from */
+    int           extension;    /* XI extension offset */
+    int           evtype;
+    Time          time;
+    int           deviceid;
+    int           sourceid;
+    Window        event;
+    Window        root;
+    double        root_x;
+    double        root_y;
+    double        dx;
+    double        dy;
+    int           dtime;
+    int           flags;
+    PointerBarrier barrier;
+    BarrierEventID eventid;
+} XIBarrierEvent;
+
 _XFUNCPROTOBEGIN
 
 extern Bool     XIQueryPointer(
@@ -603,6 +635,21 @@ XIGetProperty(
     unsigned char       **data
 );
 
+extern void
+XIBarrierReleasePointers(
+    Display*                    display,
+    XIBarrierReleasePointerInfo *barriers,
+    int                         num_barriers
+);
+
+extern void
+XIBarrierReleasePointer(
+    Display*                    display,
+    int                         deviceid,
+    PointerBarrier              barrier,
+    BarrierEventID              eventid
+);
+
 extern void XIFreeDeviceInfo(XIDeviceInfo       *info);
 
 _XFUNCPROTOEND
diff --git a/src/Makefile.am b/src/Makefile.am
index 806265c..ee40753 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -13,7 +13,8 @@ XI2_sources = XIAllowEvents.c \
                  XIWarpPointer.c \
                  XIHierarchy.c \
                  XIDefineCursor.c \
-                 XIQueryPointer.c
+                 XIQueryPointer.c \
+                 XIBarrier.c
 
 libXi_la_SOURCES = \
                  XAllowDv.c \
diff --git a/src/XExtInt.c b/src/XExtInt.c
index 1c668c7..57d071d 100644
--- a/src/XExtInt.c
+++ b/src/XExtInt.c
@@ -124,6 +124,9 @@ wireToPropertyEvent(xXIPropertyEvent *in, 
XGenericEventCookie *cookie);
 static int
 wireToTouchOwnershipEvent(xXITouchOwnershipEvent *in,
                           XGenericEventCookie *cookie);
+static int
+wireToBarrierEvent(xXIBarrierEvent *in,
+                   XGenericEventCookie *cookie);
 
 static /* const */ XEvent emptyevent;
 
@@ -1022,6 +1025,16 @@ XInputWireToCookie(
                 break;
             }
             return ENQUEUE_EVENT;
+        case XI_BarrierHit:
+        case XI_BarrierLeave:
+            *cookie = *(XGenericEventCookie*)save;
+            if (!wireToBarrierEvent((xXIBarrierEvent*)event, cookie))
+            {
+                printf("XInputWireToCookie: CONVERSION FAILURE!  evtype=%d\n",
+                        ge->evtype);
+                break;
+            }
+            return ENQUEUE_EVENT;
         default:
             printf("XInputWireToCookie: Unknown generic event. type %d\n", 
ge->evtype);
 
@@ -1403,7 +1416,21 @@ copyRawEvent(XGenericEventCookie *cookie_in,
     return True;
 }
 
+static Bool
+copyBarrierEvent(XGenericEventCookie *in_cookie,
+                 XGenericEventCookie *out_cookie)
+{
+    XIBarrierEvent *in, *out;
+
+    in = in_cookie->data;
+
+    out = out_cookie->data = calloc(1, sizeof(XIBarrierEvent));
+    if (!out)
+        return False;
+    *out = *in;
 
+    return True;
+}
 
 static Bool
 XInputCopyCookie(Display *dpy, XGenericEventCookie *in, XGenericEventCookie 
*out)
@@ -1459,6 +1486,10 @@ XInputCopyCookie(Display *dpy, XGenericEventCookie *in, 
XGenericEventCookie *out
         case XI_RawMotion:
             ret = copyRawEvent(in, out);
             break;
+        case XI_BarrierHit:
+        case XI_BarrierLeave:
+            ret = copyBarrierEvent(in, out);
+            break;
         default:
             printf("XInputCopyCookie: unknown evtype %d\n", in->evtype);
             ret = False;
@@ -1958,3 +1989,34 @@ wireToTouchOwnershipEvent(xXITouchOwnershipEvent *in,
 
     return 1;
 }
+
+#define FP3232_TO_DOUBLE(x) ((double) (x).integral + (x).frac / (1ULL << 32))
+
+static int
+wireToBarrierEvent(xXIBarrierEvent *in, XGenericEventCookie *cookie)
+{
+    XIBarrierEvent *out = malloc(sizeof(XIBarrierEvent));
+
+    cookie->data = out;
+
+    out->display    = cookie->display;
+    out->type       = in->type;
+    out->extension  = in->extension;
+    out->evtype     = in->evtype;
+    out->send_event = ((in->type & 0x80) != 0);
+    out->time       = in->time;
+    out->deviceid   = in->deviceid;
+    out->sourceid   = in->sourceid;
+    out->event      = in->event;
+    out->root       = in->root;
+    out->root_x     = FP1616toDBL(in->root_x);
+    out->root_y     = FP1616toDBL(in->root_y);
+    out->dx         = FP3232_TO_DOUBLE (in->dx);
+    out->dy         = FP3232_TO_DOUBLE (in->dy);
+    out->dtime      = in->dtime;
+    out->flags      = in->flags;
+    out->barrier    = in->barrier;
+    out->eventid    = in->eventid;
+
+    return 1;
+}
diff --git a/src/XIBarrier.c b/src/XIBarrier.c
new file mode 100644
index 0000000..155b98b
--- /dev/null
+++ b/src/XIBarrier.c
@@ -0,0 +1,81 @@
+/*
+ * Copyright © 2009 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdint.h>
+#include <X11/Xlibint.h>
+#include <X11/extensions/XI2proto.h>
+#include <X11/extensions/XInput2.h>
+#include <X11/extensions/extutil.h>
+#include "XIint.h"
+
+void
+XIBarrierReleasePointers(Display *dpy,
+                         XIBarrierReleasePointerInfo *barriers,
+                         int num_barriers)
+{
+    XExtDisplayInfo            *info = XInput_find_display(dpy);
+    xXIBarrierReleasePointerReq *req;
+    int extra = 0;
+    int i;
+    xXIBarrierReleasePointerInfo *b;
+
+    if (!num_barriers)
+        return;
+
+    extra = (num_barriers * sizeof(xXIBarrierReleasePointerInfo));
+
+    LockDisplay (dpy);
+    GetReqExtra (XIBarrierReleasePointer, extra, req);
+    req->reqType = info->codes->major_opcode;
+    req->ReqType = X_XIBarrierReleasePointer;
+    req->num_barriers = num_barriers;
+
+    b = (xXIBarrierReleasePointerInfo *) &req[1];
+    for (i = 0; i < num_barriers; i++, b++) {
+        b->deviceid = barriers[i].deviceid;
+        b->eventid = barriers[i].eventid;
+        b->barrier = barriers[i].barrier;
+    }
+
+    UnlockDisplay (dpy);
+    SyncHandle ();
+}
+
+void
+XIBarrierReleasePointer(Display *dpy,
+                        int            deviceid,
+                        PointerBarrier barrier,
+                        BarrierEventID eventid)
+{
+    XIBarrierReleasePointerInfo info;
+    info.deviceid = deviceid;
+    info.barrier = barrier;
+    info.eventid = eventid;
+
+    XIBarrierReleasePointers(dpy, &info, 1);
+}
diff --git a/src/XIint.h b/src/XIint.h
index be4eafb..571bb23 100644
--- a/src/XIint.h
+++ b/src/XIint.h
@@ -22,6 +22,7 @@
 #endif
 #define XInput_2_1                     8
 #define XInput_2_2                     9
+#define XInput_2_3                     10
 
 extern XExtDisplayInfo *XInput_find_display(Display *);
 

commit f694bd3fcf38213ae787a3ebe4e8b2df8b2dcdc7
Author: Peter Hutterer <peter.hutte...@who-t.net>
Date:   Fri Dec 7 14:39:50 2012 +1000

    Bump to 1.6.99
    
    Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net>

diff --git a/configure.ac b/configure.ac
index 2d3a46a..0f8ff43 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,7 @@
 
 # Initialize Autoconf
 AC_PREREQ([2.60])
-AC_INIT([libXi], [1.6.1],
+AC_INIT([libXi], [1.6.99],
        [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [libXi])
 AC_CONFIG_SRCDIR([Makefile.am])
 AC_CONFIG_HEADERS([src/config.h])

commit 31c6cf9f6fbcc7e90e3d6b7927664cbe54e27edf
Author: Peter Hutterer <peter.hutte...@who-t.net>
Date:   Thu Dec 6 10:38:16 2012 +1000

    Fix const compiler warnings
    
    XExtInt.c:80:38: warning: initialization discards 'const' qualifier from
    pointer target type [enabled by default]
    XExtInt.c:150:5: warning: initialization discards 'const' qualifier from
    pointer target type [enabled by default]
    XExtInt.c:151:5: warning: initialization discards 'const' qualifier from
    pointer target type [enabled by default]
    XExtInt.c:152:5: warning: initialization discards 'const' qualifier from
    pointer target type [enabled by default]
    XExtInt.c:153:5: warning: initialization discards 'const' qualifier from
    pointer target type [enabled by default]
    XExtInt.c:154:5: warning: initialization discards 'const' qualifier from
    pointer target type [enabled by default]
    
    Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net>
    Reviewed-by: Dan Nicholson <dbn.li...@gmail.com>

diff --git a/src/XExtInt.c b/src/XExtInt.c
index fd1ae6c..1c668c7 100644
--- a/src/XExtInt.c
+++ b/src/XExtInt.c
@@ -77,7 +77,7 @@ int copy_classes(XIDeviceInfo *to, xXIAnyInfo* from, int 
*nclasses);
 int size_classes(xXIAnyInfo* from, int nclasses);
 
 static XExtensionInfo *xinput_info;
-static /* const */ char *xinput_extension_name = INAME;
+static const char *xinput_extension_name = INAME;
 
 static int XInputClose(
     Display *          /* dpy */,
@@ -143,7 +143,7 @@ static /* const */ XExtensionHooks xinput_extension_hooks = 
{
     XInputError,       /* error_string */
 };
 
-static char *XInputErrorList[] = {
+static const char *XInputErrorList[] = {
     "BadDevice, invalid or uninitialized input device",        /* BadDevice */
     "BadEvent, invalid event type",    /* BadEvent */
     "BadMode, invalid mode parameter", /* BadMode  */

commit b4e07e7acc84f68ed2d37557d64d5655cc262ed5
Author: Peter Hutterer <peter.hutte...@who-t.net>
Date:   Thu Dec 6 10:27:35 2012 +1000

    Fix compiler warnings
    
    XIQueryVersion.c: In function '_xiQueryVersion':
    XIQueryVersion.c:63:26: warning: declaration of 'info' shadows a parameter
    [-Wshadow]
    XIQueryVersion.c:53:73: warning: shadowed declaration is here [-Wshadow]
    
    XExtInt.c: In function 'XInputWireToEvent':
    XExtInt.c:823:25: warning: declaration of 'i' shadows a previous local
    [-Wshadow]
    XExtInt.c:502:18: warning: shadowed declaration is here [-Wshadow]
    XExtInt.c:850:25: warning: declaration of 'i' shadows a previous local
    [-Wshadow]
    XExtInt.c:502:18: warning: shadowed declaration is here [-Wshadow]
    
    In file included from XExtInt.c:64:0:
    ../include/X11/extensions/XInput.h:166:17: note: previous declaration of
    '_xidevicebusy' was here
    XExtInt.c:101:12: warning: redundant redeclaration of
    '_XiGetDevicePresenceNotifyEvent' [-Wredundant-decls]
    
    XExtInt.c:76:13: warning: redundant redeclaration of '_xibaddevice'
    [-Wredundant-decls]
    In file included from XExtInt.c:64:0:
    ../include/X11/extensions/XInput.h:162:17: note: previous declaration of
    '_xibaddevice' was here
    XExtInt.c:81:13: warning: redundant redeclaration of '_xibadclass'
    [-Wredundant-decls]
    In file included from XExtInt.c:64:0:
    ../include/X11/extensions/XInput.h:163:17: note: previous declaration of
    '_xibadclass' was here
    XExtInt.c:86:13: warning: redundant redeclaration of '_xibadevent'
    [-Wredundant-decls]
    In file included from XExtInt.c:64:0:
    ../include/X11/extensions/XInput.h:164:17: note: previous declaration of
    '_xibadevent' was here
    XExtInt.c:91:13: warning: redundant redeclaration of '_xibadmode'
    [-Wredundant-decls]
    In file included from XExtInt.c:64:0:
    ../include/X11/extensions/XInput.h:165:17: note: previous declaration of
    '_xibadmode' was here
    XExtInt.c:96:13: warning: redundant redeclaration of '_xidevicebusy'
    [-Wredundant-decls]
    In file included from XExtInt.c:64:0:
    ../include/X11/extensions/XInput.h:166:17: note: previous declaration of
    '_xidevicebusy' was here
    
    XListDev.c: In function 'ParseClassInfo':
    XListDev.c:116:33: warning: declaration of 'k' shadows a previous local
    [-Wshadow]
    XListDev.c:109:12: warning: shadowed declaration is here [-Wshadow]
    
    XGetFCtl.c: In function 'XGetFeedbackControl':
    XGetFCtl.c:184:26: warning: declaration of 'i' shadows a previous local
    [-Wshadow]
    XGetFCtl.c:72:17: warning: shadowed declaration is here [-Wshadow]
    
    Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net>
    Reviewed-by: Dan Nicholson <dbn.li...@gmail.com>

diff --git a/src/XExtInt.c b/src/XExtInt.c
index 27638bd..fd1ae6c 100644
--- a/src/XExtInt.c
+++ b/src/XExtInt.c
@@ -73,35 +73,6 @@ SOFTWARE.
 #define DONT_ENQUEUE   False
 #define FP1616toDBL(x) ((x) * 1.0 / (1 << 16))
 
-extern void _xibaddevice(
-    Display *          /* dpy */,
-    int *              /* error */
-);
-
-extern void _xibadclass(
-    Display *          /* dpy */,
-    int *              /* error */
-);
-
-extern void _xibadevent(
-    Display *          /* dpy */,
-    int *              /* error */
-);
-
-extern void _xibadmode(
-    Display *          /* dpy */,
-    int *              /* error */
-);
-
-extern void _xidevicebusy(
-    Display *          /* dpy */,
-    int *              /* error */
-);
-
-extern int _XiGetDevicePresenceNotifyEvent(
-    Display *          /* dpy */
-);
-
 int copy_classes(XIDeviceInfo *to, xXIAnyInfo* from, int *nclasses);
 int size_classes(xXIAnyInfo* from, int nclasses);
 
@@ -496,7 +467,6 @@ XInputWireToEvent(
     xEvent     *event)
 {
     unsigned int type, reltype;
-    unsigned int i, j;
     XExtDisplayInfo *info = XInput_find_display(dpy);
     XEvent *save = (XEvent *) info->data;
 
@@ -621,6 +591,7 @@ XInputWireToEvent(
                 {
                     deviceValuator *xev = (deviceValuator *) event;
                     int save_type = save->type - info->codes->first_event;
+                    int i;
 
                     if (save_type == XI_DeviceKeyPress || save_type == 
XI_DeviceKeyRelease) {
                         XDeviceKeyEvent *kev = (XDeviceKeyEvent *) save;
@@ -716,6 +687,7 @@ XInputWireToEvent(
                                 pev->axis_data[0] = xev->valuator0;
                         }
                     } else if (save_type == XI_DeviceStateNotify) {
+                        int j;
                         XDeviceStateNotifyEvent *sev = 
(XDeviceStateNotifyEvent *) save;
                         XInputClass *any = (XInputClass *) & sev->data[0];
                         XValuatorStatus *v;
@@ -760,6 +732,7 @@ XInputWireToEvent(
                 break;
             case XI_DeviceStateNotify:
                 {
+                    int j;
                     XDeviceStateNotifyEvent *stev = (XDeviceStateNotifyEvent 
*) save;
                     deviceStateNotify *sev = (deviceStateNotify *) event;
                     char *data;
diff --git a/src/XGetFCtl.c b/src/XGetFCtl.c
index 2961034..43afa00 100644
--- a/src/XGetFCtl.c
+++ b/src/XGetFCtl.c
@@ -181,18 +181,18 @@ XGetFeedbackControl(
            }
            case IntegerFeedbackClass:
            {
-               xIntegerFeedbackState *i;
+               xIntegerFeedbackState *ifs;
                XIntegerFeedbackState *I;
 
-               i = (xIntegerFeedbackState *) f;
+               ifs = (xIntegerFeedbackState *) f;
                I = (XIntegerFeedbackState *) Feedback;
 
-               I->class = i->class;
+               I->class = ifs->class;
                I->length = sizeof(XIntegerFeedbackState);
-               I->id = i->id;
-               I->resolution = i->resolution;
-               I->minVal = i->min_value;
-               I->maxVal = i->max_value;
+               I->id = ifs->id;
+               I->resolution = ifs->resolution;
+               I->minVal = ifs->min_value;
+               I->maxVal = ifs->max_value;
                break;
            }
            case StringFeedbackClass:
diff --git a/src/XIQueryVersion.c b/src/XIQueryVersion.c
index 225737f..3f2e73e 100644
--- a/src/XIQueryVersion.c
+++ b/src/XIQueryVersion.c
@@ -60,15 +60,15 @@ _xiQueryVersion(Display * dpy, int *major, int *minor, 
XExtDisplayInfo *info)
     if (_XiCheckExtInit(dpy, XInput_2_0, info) == -1)
     {
         XExtensionVersion *ext;
-        XExtDisplayInfo *info = XInput_find_display(dpy);
+        XExtDisplayInfo *extinfo = XInput_find_display(dpy);
 
-        if (!info || !info->data) {
+        if (!extinfo || !extinfo->data) {
             *major = 0;
             *minor = 0;
             return BadRequest;
         }
 
-        ext = ((XInputData*)info->data)->vers;
+        ext = ((XInputData*)extinfo->data)->vers;
 
         *major = ext->major_version;
         *minor = ext->minor_version;
diff --git a/src/XListDev.c b/src/XListDev.c
index 6b91238..bd6e70a 100644
--- a/src/XListDev.c
+++ b/src/XListDev.c
@@ -106,7 +106,7 @@ SizeClassInfo(xAnyClassPtr *any, int num_classes)
 static void
 ParseClassInfo(xAnyClassPtr *any, XAnyClassPtr *Any, int num_classes)
 {
-    int j, k;
+    int j;
 
     for (j = 0; j < num_classes; j++) {
         switch ((*any)->class) {
@@ -134,6 +134,7 @@ ParseClassInfo(xAnyClassPtr *any, XAnyClassPtr *Any, int 
num_classes)
                 }
             case ValuatorClass:
                 {
+                    int k;
                     XValuatorInfoPtr V = (XValuatorInfoPtr) *Any;
                     xValuatorInfoPtr v = (xValuatorInfoPtr) *any;
                     XAxisInfoPtr A;

commit 845550471fcd95d77e8d738ab8798d8e6e568b4a
Author: Peter Hutterer <peter.hutte...@who-t.net>
Date:   Wed Nov 7 08:51:23 2012 +1000

    man: add generation of missing man pages for XIGrabTouchBegin
    
    The man page itself already contained the description, but it was missing
    from NAME so the shadow man pages were not generated.
    
    Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net>
    Reviewed-by: Chase Douglas <chase.doug...@ubuntu.com>

diff --git a/man/Makefile.am b/man/Makefile.am
index 28211a1..af63952 100644
--- a/man/Makefile.am
+++ b/man/Makefile.am
@@ -89,7 +89,9 @@ XI2_shadows =                                         \
        XIGetSelectedEvents.man                 \
        XIDeleteProperty.man                    \
        XIGetProperty.man                       \
-       XIFreeDeviceInfo.man
+       XIFreeDeviceInfo.man                    \
+       XIGrabTouchBegin.man                    \
+       XIUngrabTouchBegin.man
 
 libman_shadows =                               \
        XGetDeviceDontPropagateList.man         \
@@ -141,7 +143,7 @@ XDeleteDeviceProperty.man: XGetDeviceProperty.man
 
 # Dependencies for X Input v2 shadow pages
 XIUndefineCursor.man: XIDefineCursor.man
-XIUngrabButton.man XIGrabKeycode.man XIUngrabKeycode.man: XIGrabButton.man
+XIUngrabButton.man XIGrabKeycode.man XIUngrabKeycode.man XIGrabTouchBegin.man 
XIUngrabTouchBegin.man: XIGrabButton.man
 XIGetClientPointer.man: XISetClientPointer.man
 XIGetFocus.man: XISetFocus.man
 XIUngrabDevice.man: XIGrabDevice.man
diff --git a/man/XIGrabButton.txt b/man/XIGrabButton.txt
index a046ac7..c5100fb 100644
--- a/man/XIGrabButton.txt
+++ b/man/XIGrabButton.txt
@@ -4,8 +4,7 @@ XIGRABBUTTON(libmansuffix)
 NAME
 ----
 
-   XIGrabButton, XIUngrabButton, XIGrabKeycode, XIUngrabKeycode -
-   grab/ungrab buttons or keys
+   XIGrabButton, XIUngrabButton, XIGrabKeycode, XIUngrabKeycode, 
XIGrabTouchBegin, XIUngrabTouchBegin - grab/ungrab buttons or keys
 
 SYNOPSIS
 --------

commit 8c0eb1b6b4017b1e886981dc32cea90f2d4b9b64
Author: Peter Hutterer <peter.hutte...@who-t.net>
Date:   Thu Oct 11 13:33:45 2012 +1000

    man: fix formatting issues in XGetDeviceControl(3)
    
    Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net>

diff --git a/man/XGetDeviceControl.txt b/man/XGetDeviceControl.txt
index 09bf065..1c5e86d 100644
--- a/man/XGetDeviceControl.txt
+++ b/man/XGetDeviceControl.txt
@@ -46,7 +46,7 @@ DESCRIPTION
    Valid device control types that can be used with these requests
    include the following:
 
-   DEVICE_RESOLUTION Queries or changes the resolution of
+   DEVICE_RESOLUTION: Queries or changes the resolution of
    valuators on input devices.
 
    The XGetDeviceControl request returns a pointer to an
@@ -60,9 +60,13 @@ DESCRIPTION
    with the request.
 
    XChangeDeviceControl can generate a BadDevice, BadMatch, or
-   BadValue error..SH STRUCTURES Each control is described by a
-   structure specific to that control. These structures are
-   defined in the file XInput.h.
+   BadValue error.
+
+STRUCTURES
+----------
+
+   Each control is described by a structure specific to that control.
+   These structures are defined in the file XInput.h.
 
    XDeviceControl is a generic structure that contains two fields
    that are at the beginning of each class of control:

commit ae163b6202d844a46541928d00049b29cbdf930f
Author: Peter Hutterer <peter.hutte...@who-t.net>
Date:   Thu May 3 16:01:35 2012 +1000

    libXi 1.6.1
    
    Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net>

diff --git a/configure.ac b/configure.ac
index fc8c1f2..2d3a46a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,7 @@
 
 # Initialize Autoconf
 AC_PREREQ([2.60])
-AC_INIT([libXi], [1.6.0],
+AC_INIT([libXi], [1.6.1],
        [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [libXi])
 AC_CONFIG_SRCDIR([Makefile.am])
 AC_CONFIG_HEADERS([src/config.h])

commit fd5e000308925f703ecd15c288127ab33a456425
Author: Peter Hutterer <peter.hutte...@who-t.net>
Date:   Mon Apr 23 13:32:59 2012 +1000

    man: update XIQueryVersion for current server behaviour
    
    XIQueryVersion(v1);
    XIQueryVersion(v2);
    
    is now ok as long as v1 <= v2.
    
    Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net>
    Reviewed-by: Jeremy Huddleston <jerem...@apple.com>

diff --git a/man/XIQueryVersion.txt b/man/XIQueryVersion.txt
index 53118ed..839c18c 100644
--- a/man/XIQueryVersion.txt
+++ b/man/XIQueryVersion.txt
@@ -42,8 +42,12 @@ DESCRIPTION
    cases major_version_inout and minor_version_inout are set to the 
    server's supported version.
 
-   XIQueryVersion can generate a BadValue error.
+   Consecutive calls to XIQueryVersion by the same client always return the
+   first returned major.minor version. If the client requests a version
+   lower than the first returned major.minor version in a subsequent call, a
+   BadValue error occurs.
 
+   XIQueryVersion can generate a BadValue error.
 
 EXAMPLES
 --------

commit f8f44f42eb543ecd944a84facba6c09bf48e7711
Author: Chase Douglas <chase.doug...@canonical.com>
Date:   Fri Apr 20 15:30:30 2012 -0700

    Destroy extension record after last display is removed
    
    The extension record is currently leaked and never freed.
    
    Signed-off-by: Chase Douglas <chase.doug...@canonical.com>
    Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net>

diff --git a/src/XExtInt.c b/src/XExtInt.c
index 43738a2..27638bd 100644
--- a/src/XExtInt.c
+++ b/src/XExtInt.c
@@ -434,7 +434,16 @@ XInputClose(
        XFree((char *)((XInputData *) info->data)->vers);
        XFree((char *)info->data);
     }
-    return XextRemoveDisplay(xinput_info, dpy);
+
+    if (!XextRemoveDisplay(xinput_info, dpy))
+        return 0;
+
+    if (xinput_info->ndisplays == 0) {
+        XextDestroyExtension(xinput_info);
+        xinput_info = NULL;
+    }
+
+    return 1;
 }
 
 static int

commit 2ac185d2fd2b884f4f59a7f7f61f414d139859aa
Author: Peter Hutterer <peter.hutte...@who-t.net>
Date:   Mon Mar 26 09:07:34 2012 +1000

    Set the RawEvent sourceid (#34240)
    
    XI 2.2 and later include the sourceid in raw events.
    
    X.Org Bug 34240 <http://bugs.freedesktop.org/show_bug.cgi?id=34240>
    
    Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net>
    Reviewed-by: Chase Douglas <chase.doug...@canonical.com>

diff --git a/src/XExtInt.c b/src/XExtInt.c
index 4f85667..43738a2 100644
--- a/src/XExtInt.c
+++ b/src/XExtInt.c
@@ -145,7 +145,7 @@ wireToDeviceChangedEvent(xXIDeviceChangedEvent *in, 
XGenericEventCookie *cookie)
 static int
 wireToHierarchyChangedEvent(xXIHierarchyEvent *in, XGenericEventCookie 
*cookie);
 static int
-wireToRawEvent(xXIRawEvent *in, XGenericEventCookie *cookie);
+wireToRawEvent(XExtDisplayInfo *info, xXIRawEvent *in, XGenericEventCookie 
*cookie);
 static int
 wireToEnterLeave(xXIEnterEvent *in, XGenericEventCookie *cookie);
 static int
@@ -1012,7 +1012,7 @@ XInputWireToCookie(
         case XI_RawTouchUpdate:
         case XI_RawTouchEnd:
             *cookie = *(XGenericEventCookie*)save;
-            if (!wireToRawEvent((xXIRawEvent*)event, cookie))
+            if (!wireToRawEvent(info, (xXIRawEvent*)event, cookie))
             {
                 printf("XInputWireToCookie: CONVERSION FAILURE!  evtype=%d\n",
                         ge->evtype);
@@ -1832,14 +1832,13 @@ wireToHierarchyChangedEvent(xXIHierarchyEvent *in, 
XGenericEventCookie *cookie)
 }
 
 static int
-wireToRawEvent(xXIRawEvent *in, XGenericEventCookie *cookie)
+wireToRawEvent(XExtDisplayInfo *info, xXIRawEvent *in, XGenericEventCookie 
*cookie)
 {
     int len, i, bits;
     FP3232 *values;
     XIRawEvent *out;
     void *ptr;
 
-
     len = sizeof(XIRawEvent) + in->valuators_len * 4;
     bits = count_bits((unsigned char*)&in[1], in->valuators_len * 4);
     len += bits * sizeof(double) * 2; /* raw + normal */
@@ -1857,9 +1856,14 @@ wireToRawEvent(xXIRawEvent *in, XGenericEventCookie 
*cookie)
     out->time           = in->time;
     out->detail         = in->detail;
     out->deviceid       = in->deviceid;
-    out->sourceid       = 0; /* 
https://bugs.freedesktop.org/show_bug.cgi?id=34240 */
     out->flags          = in->flags;
 
+    /* https://bugs.freedesktop.org/show_bug.cgi?id=34240 */
+    if (_XiCheckVersion(info, XInput_2_2) >= 0)
+        out->sourceid       = in->sourceid;
+    else
+        out->sourceid       = 0;
+
     out->valuators.mask_len = in->valuators_len * 4;
     out->valuators.mask = next_block(&ptr, out->valuators.mask_len);
     memcpy(out->valuators.mask, &in[1], out->valuators.mask_len);

commit dfc101e4c6cdac4ff9a51732b2754287fbdc8582
Author: Peter Hutterer <peter.hutte...@who-t.net>
Date:   Mon Mar 26 09:05:24 2012 +1000

    Move version comparison into a helper function.
    
    No functional changes, this simply introduces a version helper function that
    returns -1, 0 or 1 depending on the version comparison result. To be used
    internally only.
    


-- 
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/e1u3de9-0006gl...@vasks.debian.org

Reply via email to