xserver: Branch 'master' - 5 commits

Keith Packard keithp at kemper.freedesktop.org
Wed Jan 5 08:44:06 PST 2011


 0 files changed

New commits:
commit 7714357f506782973d25e270f85140b42507ed35
Merge: 02e18c9... b01dd9d...
Author: Keith Packard <keithp at keithp.com>
Date:   Wed Jan 5 08:43:18 2011 -0800

    Merge remote branch 'whot/for-keith'

commit b01dd9d33651999b0390bf8ed412b84f6929a13e
Author: Daniel Stone <daniel at fooishbar.org>
Date:   Fri Dec 17 17:13:34 2010 +0000

    Input: Set client error value for invalid mask bits
    
    When we send BadValue back to the client for having invalid mask bits,
    at least tell them what the (first) invalid bit was.
    
    Signed-off-by: Daniel Stone <daniel at fooishbar.org>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/Xi/xigrabdev.c b/Xi/xigrabdev.c
index 24ededc..0adc878 100644
--- a/Xi/xigrabdev.c
+++ b/Xi/xigrabdev.c
@@ -79,7 +79,7 @@ ProcXIGrabDevice(ClientPtr client)
     if (!IsMaster(dev))
         stuff->paired_device_mode = GrabModeAsync;
 
-    if (XICheckInvalidMaskBits((unsigned char*)&stuff[1],
+    if (XICheckInvalidMaskBits(client, (unsigned char*)&stuff[1],
                                stuff->mask_len * 4) != Success)
         return BadValue;
 
diff --git a/Xi/xipassivegrab.c b/Xi/xipassivegrab.c
index 2966145..e99b6e5 100644
--- a/Xi/xipassivegrab.c
+++ b/Xi/xipassivegrab.c
@@ -118,7 +118,7 @@ ProcXIPassiveGrabDevice(ClientPtr client)
         return BadValue;
     }
 
-    if (XICheckInvalidMaskBits((unsigned char*)&stuff[1],
+    if (XICheckInvalidMaskBits(client, (unsigned char*)&stuff[1],
                                stuff->mask_len * 4) != Success)
         return BadValue;
 
diff --git a/Xi/xiselectev.c b/Xi/xiselectev.c
index 7aa3f0a..22fbaf5 100644
--- a/Xi/xiselectev.c
+++ b/Xi/xiselectev.c
@@ -42,14 +42,19 @@
  *
  * @return BadValue if at least one invalid bit is set or Success otherwise.
  */
-int XICheckInvalidMaskBits(unsigned char *mask, int len)
+int XICheckInvalidMaskBits(ClientPtr client, unsigned char *mask, int len)
 {
     if (len >= XIMaskLen(XI2LASTEVENT))
     {
         int i;
         for (i = XI2LASTEVENT + 1; i < len * 8; i++)
+        {
             if (BitIsOn(mask, i))
+            {
+                client->errorValue = i;
                 return BadValue;
+            }
+        }
     }
 
     return Success;
@@ -126,7 +131,10 @@ ProcXISelectEvents(ClientPtr client)
         {
             unsigned char *bits = (unsigned char*)&evmask[1];
             if (BitIsOn(bits, XI_HierarchyChanged))
+            {
+                client->errorValue = XI_HierarchyChanged;
                 return BadValue;
+            }
         }
 
         /* Raw events may only be selected on root windows */
@@ -138,10 +146,13 @@ ProcXISelectEvents(ClientPtr client)
                 BitIsOn(bits, XI_RawButtonPress) ||
                 BitIsOn(bits, XI_RawButtonRelease) ||
                 BitIsOn(bits, XI_RawMotion))
+            {
+                client->errorValue = XI_RawKeyPress;
                 return BadValue;
+            }
         }
 
-        if (XICheckInvalidMaskBits((unsigned char*)&evmask[1],
+        if (XICheckInvalidMaskBits(client, (unsigned char*)&evmask[1],
                                    evmask->mask_len * 4) != Success)
             return BadValue;
 
diff --git a/include/exevents.h b/include/exevents.h
index bfee385..dc59430 100644
--- a/include/exevents.h
+++ b/include/exevents.h
@@ -307,6 +307,6 @@ XISetEventMask(DeviceIntPtr dev, WindowPtr win, ClientPtr client,
                            unsigned int len, unsigned char* mask);
 
 extern int
-XICheckInvalidMaskBits(unsigned char *mask, int len);
+XICheckInvalidMaskBits(ClientPtr client, unsigned char *mask, int len);
 
 #endif /* EXEVENTS_H */
commit 495e0142a77152c4cde5c88cdba4103ddc94df2c
Author: Chase Douglas <chase.douglas at canonical.com>
Date:   Fri Dec 17 17:13:30 2010 +0000

    Make EventIsDeliverable non-static
    
    Will be used outside dix/events.c in proceeding XI 2.1 MT changes.
    
    Signed-off-by: Chase Douglas <chase.douglas at canonical.com>
    Reviewed-by: Daniel Stone <daniel at fooishbar.org>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/dix/events.c b/dix/events.c
index 4e2dd89..f280f9d 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -2290,17 +2290,6 @@ FixUpEventFromWindow(
 }
 
 /**
- * Return masks for EventIsDeliverable.
- * @defgroup EventIsDeliverable return flags
- * @{
- */
-#define XI_MASK                 (1 << 0) /**< XI mask set on window */
-#define CORE_MASK               (1 << 1) /**< Core mask set on window */
-#define DONT_PROPAGATE_MASK     (1 << 2) /**< DontPropagate mask set on window */
-#define XI2_MASK                (1 << 3) /**< XI2 mask set on window */
-/* @} */
-
-/**
  * Check if a given event is deliverable at all on a given window.
  *
  * This function only checks if any client wants it, not for a specific
@@ -2313,7 +2302,7 @@ FixUpEventFromWindow(
  * @return Bitmask of ::XI2_MASK, ::XI_MASK, ::CORE_MASK, and
  * ::DONT_PROPAGATE_MASK.
  */
-static int
+int
 EventIsDeliverable(DeviceIntPtr dev, InternalEvent* event, WindowPtr win)
 {
     int rc = 0;
diff --git a/include/input.h b/include/input.h
index fef69a1..9f3227f 100644
--- a/include/input.h
+++ b/include/input.h
@@ -532,6 +532,18 @@ void FixUpEventFromWindow(DeviceIntPtr pDev,
                           WindowPtr pWin,
                           Window child,
                           Bool calcChild);
+extern int EventIsDeliverable(DeviceIntPtr dev, InternalEvent* event,
+                              WindowPtr win);
+/**
+ * Return masks for EventIsDeliverable.
+ * @defgroup EventIsDeliverable return flags
+ * @{
+ */
+#define XI_MASK                 (1 << 0) /**< XI mask set on window */
+#define CORE_MASK               (1 << 1) /**< Core mask set on window */
+#define DONT_PROPAGATE_MASK     (1 << 2) /**< DontPropagate mask set on window */
+#define XI2_MASK                (1 << 3) /**< XI2 mask set on window */
+/* @} */
 
 /* Implemented by the DDX. */
 extern _X_EXPORT int NewInputDeviceRequest(
commit 4fbe67beb56e5600c1df789c08725c45b9bef0d4
Author: Daniel Stone <daniel at fooishbar.org>
Date:   Fri Dec 17 17:13:26 2010 +0000

    Resources: Move rClient to resource.h
    
    The definition of rClient was duplicated across three source files, so
    move it to resource.h.
    
    Signed-off-by: Daniel Stone <daniel at fooishbar.org>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/Xext/geext.c b/Xext/geext.c
index 8319c92..b37c1a0 100644
--- a/Xext/geext.c
+++ b/Xext/geext.c
@@ -33,8 +33,6 @@
 #include "geext.h"
 #include "protocol-versions.h"
 
-#define rClient(obj) (clients[CLIENT_ID((obj)->resource)])
-
 DevPrivateKeyRec GEClientPrivateKeyRec;
 
 int RT_GECLIENT  = 0;
diff --git a/Xext/security.c b/Xext/security.c
index 7eb95de..8673880 100644
--- a/Xext/security.c
+++ b/Xext/security.c
@@ -154,8 +154,6 @@ SecurityLookupRequestName(ClientPtr client)
 }
 
 
-#define rClient(obj) (clients[CLIENT_ID((obj)->resource)])
-
 /* SecurityDeleteAuthorization
  *
  * Arguments:
diff --git a/dix/events.c b/dix/events.c
index ac07923..4e2dd89 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -195,8 +195,6 @@ typedef const char *string;
 #define XE_KBPTR (xE->u.keyButtonPointer)
 
 
-#define rClient(obj) (clients[CLIENT_ID((obj)->resource)])
-
 CallbackListPtr EventCallback;
 CallbackListPtr DeviceEventCallback;
 
diff --git a/include/resource.h b/include/resource.h
index 0c5a59d..080061f 100644
--- a/include/resource.h
+++ b/include/resource.h
@@ -121,6 +121,8 @@ typedef unsigned long RESTYPE;
 
 #define BAD_RESOURCE 0xe0000000
 
+#define rClient(obj) (clients[CLIENT_ID((obj)->resource)])
+
 /* Resource state callback */
 extern _X_EXPORT CallbackListPtr ResourceStateCallback;
 
commit 871c1e17e527857cd86b5e517d9a18e5041f00fd
Author: Chase Douglas <chase.douglas at canonical.com>
Date:   Fri Dec 17 17:13:27 2010 +0000

    Export all valuator_mask_* functions
    
    Input drivers may use valuator masks for internal state. Having all the
    valuator_mask_* functions available will help.
    
    Signed-off-by: Chase Douglas <chase.douglas at canonical.com>
    Reviewed-by: Daniel Stone <daniel at fooishbar.org>
    
    Bump ABI_XINPUT_VERSION minor.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/hw/xfree86/common/xf86Module.h b/hw/xfree86/common/xf86Module.h
index af7b778..609819b 100644
--- a/hw/xfree86/common/xf86Module.h
+++ b/hw/xfree86/common/xf86Module.h
@@ -83,7 +83,7 @@ typedef enum {
  */
 #define ABI_ANSIC_VERSION	SET_ABI_VERSION(0, 4)
 #define ABI_VIDEODRV_VERSION	SET_ABI_VERSION(9, 0)
-#define ABI_XINPUT_VERSION	SET_ABI_VERSION(12, 0)
+#define ABI_XINPUT_VERSION	SET_ABI_VERSION(12, 1)
 #define ABI_EXTENSION_VERSION	SET_ABI_VERSION(5, 0)
 #define ABI_FONT_VERSION	SET_ABI_VERSION(0, 6)
 
diff --git a/include/input.h b/include/input.h
index 8feac28..fef69a1 100644
--- a/include/input.h
+++ b/include/input.h
@@ -554,7 +554,6 @@ extern _X_HIDDEN void valuator_set_mode(DeviceIntPtr dev, int axis, int mode);
    xfixes/cursor.c uses it to determine if the cursor is enabled */
 extern Bool EnableCursor;
 
-/* For server-internal functions, see inpututil.h */
 extern _X_EXPORT ValuatorMask  *valuator_mask_new(int num_valuators);
 extern _X_EXPORT void valuator_mask_set_range(ValuatorMask *mask,
                                        int first_valuator, int num_valuators,
@@ -563,5 +562,12 @@ extern _X_EXPORT void valuator_mask_set(ValuatorMask *mask,
                                         int valuator,
                                         int data);
 extern _X_EXPORT void valuator_mask_zero(ValuatorMask *mask);
+extern _X_EXPORT int valuator_mask_size(const ValuatorMask *mask);
+extern _X_EXPORT int valuator_mask_isset(const ValuatorMask *mask, int bit);
+extern _X_EXPORT void valuator_mask_unset(ValuatorMask *mask, int bit);
+extern _X_EXPORT int valuator_mask_num_valuators(const ValuatorMask *mask);
+extern _X_EXPORT void valuator_mask_copy(ValuatorMask *dest,
+                                         const ValuatorMask *src);
+extern _X_EXPORT int valuator_mask_get(const ValuatorMask *mask, int valnum);
 
 #endif /* INPUT_H */
diff --git a/include/inpututils.h b/include/inpututils.h
index 54b5764..b8ca6ab 100644
--- a/include/inpututils.h
+++ b/include/inpututils.h
@@ -37,12 +37,4 @@ struct _ValuatorMask {
     int         valuators[MAX_VALUATORS]; /* valuator data */
 };
 
-/* server-internal */
-extern _X_HIDDEN int valuator_mask_size(const ValuatorMask *mask);
-extern _X_HIDDEN int valuator_mask_isset(const ValuatorMask *mask, int bit);
-extern _X_HIDDEN void valuator_mask_unset(ValuatorMask *mask, int bit);
-extern _X_HIDDEN int valuator_mask_num_valuators(const ValuatorMask *mask);
-extern _X_HIDDEN void valuator_mask_copy(ValuatorMask *dest, const ValuatorMask *src);
-extern _X_HIDDEN int valuator_mask_get(const ValuatorMask *mask, int valnum);
-
 #endif


More information about the xorg-commit mailing list