Hi all,

somehow I'm out of luck with send-email and my overly spam-alert email
provider. Sorry for double-posting! Here's the original mail (without
greeting, which somehow got suppressed):



I made an attempt to remove the absolute device class from the server.
It was, to the best of my knowledge, unused and quite misleading since
all is there except for real useage. The actual removal (patch 5+6)
is split up so the API is kept (more or less) for the benefit of
out-of-tree drivers. "More or less" refers to the AbsoluteClassRec/Ptr
pair which is being removed, but no-one out of the server seems to have
used it. The protocol and libXi parts remain untouched so GIMP won't break.

Also, the server is more honest to clients asking for AbsoluteClass
support, i.e. now you should get protocol errors instead of silent
ignorance.

The real removal merits an ABI bump, but TBH I was unsure how to do it
properly and whether or not it's overkill. No driver I'm aware of used it.

A possible alternative would be actually using this stuff, but there's
lots of overlap with existing input properties and the class does x/y
only. The only senario I could imagine was making better use of raw
absolute events, but since we have sub-pixel events that's a
questionable use case.

[PATCH 1/6] xquartz: simplify ChangeDeviceControl
[PATCH 2/6] kdrive: don't pretent to support DEVICE_ABS_* in
ChangeDeviceControl
[PATCH 3/6] xf86: don't pretend to support DEVICE_ABS_* in
ChangeDeviceControl
[PATCH 4/6] simplify ChangeDeviceControl in stubs
[PATCH 5/6] xserver: remove AbsoluteClassRec keeping the ABI
[PATCH 6/6] xserver: remove AbsoluteClass, breaking the A(P|B)I
From 47b0698fe40d283bc2a97b25d8ce2cdbd4d8d27d Mon Sep 17 00:00:00 2001
From: Simon Thum <[email protected]>
Date: Sat, 5 Mar 2011 04:58:30 +0100
Subject: [PATCH 1/6] xquartz: simplify ChangeDeviceControl

Signed-off-by: Simon Thum <[email protected]>
---
 hw/xquartz/darwinXinput.c |   12 +-----------
 1 files changed, 1 insertions(+), 11 deletions(-)

diff --git a/hw/xquartz/darwinXinput.c b/hw/xquartz/darwinXinput.c
index 8bb83ca..3ef34fe 100644
--- a/hw/xquartz/darwinXinput.c
+++ b/hw/xquartz/darwinXinput.c
@@ -117,17 +117,7 @@ ChangeDeviceControl(ClientPtr client, DeviceIntPtr dev,
 {
 
   DEBUG_LOG("ChangeDeviceControl(%p, %p, %p)\n", client, dev, control);
-    switch (control->control) {
-    case DEVICE_RESOLUTION:
-       return BadMatch;
-    case DEVICE_ABS_CALIB:
-    case DEVICE_ABS_AREA:
-        return BadMatch;
-    case DEVICE_CORE:
-        return BadMatch;
-    default:
-       return BadMatch;
-    }
+  return BadMatch;
 }
 
 
-- 
1.7.3.4

From 1808a526ba202a3cb27475c466f880530f7fbe4d Mon Sep 17 00:00:00 2001
From: Simon Thum <[email protected]>
Date: Sat, 5 Mar 2011 04:59:33 +0100
Subject: [PATCH 2/6] kdrive: don't pretent to support DEVICE_ABS_* in 
ChangeDeviceControl

Signed-off-by: Simon Thum <[email protected]>
---
 hw/kdrive/src/kinput.c |    2 --
 1 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c
index 608f3a7..3e6c2bc 100644
--- a/hw/kdrive/src/kinput.c
+++ b/hw/kdrive/src/kinput.c
@@ -2204,8 +2204,6 @@ ChangeDeviceControl(register ClientPtr client, 
DeviceIntPtr pDev,
 
     case DEVICE_ABS_CALIB:
     case DEVICE_ABS_AREA:
-        return Success;
-
     case DEVICE_CORE:
         return BadMatch;
     case DEVICE_ENABLE:
-- 
1.7.3.4

From 4cbd269c354bcda9fdf4ec4e455719c2ccf48332 Mon Sep 17 00:00:00 2001
From: Simon Thum <[email protected]>
Date: Sat, 5 Mar 2011 05:01:22 +0100
Subject: [PATCH 3/6] xf86: don't pretend to support DEVICE_ABS_* in 
ChangeDeviceControl

Signed-off-by: Simon Thum <[email protected]>
---
 hw/xfree86/common/xf86Xinput.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
index e3264e6..df67422 100644
--- a/hw/xfree86/common/xf86Xinput.c
+++ b/hw/xfree86/common/xf86Xinput.c
@@ -405,10 +405,10 @@ ChangeDeviceControl (ClientPtr client, DeviceIntPtr dev, 
xDeviceCtl *control)
   if (!pInfo->control_proc) {
       switch (control->control) {
       case DEVICE_CORE:
-          return BadMatch;
-      case DEVICE_RESOLUTION:
       case DEVICE_ABS_CALIB:
       case DEVICE_ABS_AREA:
+          return BadMatch;
+      case DEVICE_RESOLUTION:
       case DEVICE_ENABLE:
         return Success;
       default:
-- 
1.7.3.4

From 5af06dbc95d7ea79501d593115ddfd24fcdfbe42 Mon Sep 17 00:00:00 2001
From: Simon Thum <[email protected]>
Date: Sat, 5 Mar 2011 05:02:54 +0100
Subject: [PATCH 4/6] simplify ChangeDeviceControl in stubs

Signed-off-by: Simon Thum <[email protected]>
---
 Xi/stubs.c |   12 +-----------
 1 files changed, 1 insertions(+), 11 deletions(-)

diff --git a/Xi/stubs.c b/Xi/stubs.c
index d9e8eec..d74eeb8 100644
--- a/Xi/stubs.c
+++ b/Xi/stubs.c
@@ -115,17 +115,7 @@ int
 ChangeDeviceControl(ClientPtr client, DeviceIntPtr dev,
                    xDeviceCtl * control)
 {
-    switch (control->control) {
-    case DEVICE_RESOLUTION:
-       return BadMatch;
-    case DEVICE_ABS_CALIB:
-    case DEVICE_ABS_AREA:
-        return BadMatch;
-    case DEVICE_CORE:
-        return BadMatch;
-    default:
-       return BadMatch;
-    }
+  return BadMatch;
 }
 
 
-- 
1.7.3.4

From c7ef26a30295b38240eda374520f13ac358f7258 Mon Sep 17 00:00:00 2001
From: Simon Thum <[email protected]>
Date: Wed, 9 Mar 2011 20:48:22 +0100
Subject: [PATCH 5/6] xserver: remove AbsoluteClassRec keeping the ABI

This removes the struct, but keeps InitAbsoluteClassDeviceStruct as
a no-op and preserves related struct layout.
---
 Xi/chgdctl.c           |   72 ++--------------------------------------------
 Xi/exevents.c          |   24 ---------------
 Xi/getdctl.c           |   75 +-----------------------------------------------
 dix/devices.c          |   32 ++------------------
 hw/kdrive/src/kinput.c |    1 -
 hw/xquartz/darwin.c    |    2 -
 include/input.h        |    5 ++-
 include/inputstr.h     |   25 +--------------
 8 files changed, 14 insertions(+), 222 deletions(-)

diff --git a/Xi/chgdctl.c b/Xi/chgdctl.c
index 901a0e4..4c4aeba 100644
--- a/Xi/chgdctl.c
+++ b/Xi/chgdctl.c
@@ -76,8 +76,6 @@ SProcXChangeDeviceControl(ClientPtr client)
 {
     char n;
     xDeviceCtl *ctl;
-    xDeviceAbsCalibCtl *calib;
-    xDeviceAbsAreaCtl *area;
 
     REQUEST(xChangeDeviceControlReq);
     swaps(&stuff->length, n);
@@ -88,26 +86,7 @@ SProcXChangeDeviceControl(ClientPtr client)
     swaps(&ctl->length, n);
     switch(stuff->control) {
         case DEVICE_ABS_CALIB:
-            calib = (xDeviceAbsCalibCtl*)ctl;
-            swaps(&calib->length, n);
-            swapl(&calib->min_x, n);
-            swapl(&calib->max_x, n);
-            swapl(&calib->min_y, n);
-            swapl(&calib->max_y, n);
-            swapl(&calib->flip_x, n);
-            swapl(&calib->flip_y, n);
-            swapl(&calib->rotation, n);
-            swapl(&calib->button_threshold, n);
-            break;
         case DEVICE_ABS_AREA:
-            area = (xDeviceAbsAreaCtl*)ctl;
-            swapl(&area->offset_x, n);
-            swapl(&area->offset_y, n);
-            swapl(&area->width, n);
-            swapl(&area->height, n);
-            swapl(&area->screen, n);
-            swapl(&area->following, n);
-            break;
         case DEVICE_CORE:
         case DEVICE_ENABLE:
         case DEVICE_RESOLUTION:
@@ -134,8 +113,6 @@ ProcXChangeDeviceControl(ClientPtr client)
     xChangeDeviceControlReply rep;
     AxisInfoPtr a;
     CARD32 *resolution;
-    xDeviceAbsCalibCtl *calib;
-    xDeviceAbsAreaCtl *area;
     xDeviceEnableCtl *e;
     devicePresenceNotify dpn;
 
@@ -193,53 +170,10 @@ ProcXChangeDeviceControl(ClientPtr client)
        }
        break;
     case DEVICE_ABS_CALIB:
-        calib = (xDeviceAbsCalibCtl *)&stuff[1];
-
-        if (calib->button_threshold < 0 || calib->button_threshold > 255) {
-            ret = BadValue;
-            goto out;
-        }
-
-        status = ChangeDeviceControl(client, dev, (xDeviceCtl *) calib);
-
-        if (status == Success) {
-            dev->absolute->min_x = calib->min_x;
-            dev->absolute->max_x = calib->max_x;
-            dev->absolute->min_y = calib->min_y;
-            dev->absolute->max_y = calib->max_y;
-            dev->absolute->flip_x = calib->flip_x;
-            dev->absolute->flip_y = calib->flip_y;
-            dev->absolute->rotation = calib->rotation;
-            dev->absolute->button_threshold = calib->button_threshold;
-            ret = Success;
-        } else if (status == DeviceBusy || status == BadValue) {
-            rep.status = status;
-            ret = Success;
-        } else {
-            ret = BadMatch;
-        }
-
-        break;
     case DEVICE_ABS_AREA:
-        area = (xDeviceAbsAreaCtl *)&stuff[1];
-
-        status = ChangeDeviceControl(client, dev, (xDeviceCtl *) area);
-
-        if (status == Success) {
-            dev->absolute->offset_x = area->offset_x;
-            dev->absolute->offset_y = area->offset_y;
-            dev->absolute->width = area->width;
-            dev->absolute->height = area->height;
-            dev->absolute->screen = area->screen;
-            dev->absolute->following = area->following;
-            ret = Success;
-        } else if (status == DeviceBusy || status == BadValue) {
-            rep.status = status;
-            ret = Success;
-        } else {
-            ret = Success;
-        }
-
+        /* Calibration is now done through properties, and never had any effect
+         * on anything (in the open-source world). Thus, be honest. */
+        ret = BadMatch;
         break;
     case DEVICE_CORE:
         /* Sorry, no device core switching no more. If you want a device to
diff --git a/Xi/exevents.c b/Xi/exevents.c
index c7089bb..5b207bc 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -626,30 +626,6 @@ DeepCopyPointerClasses(DeviceIntPtr from, DeviceIntPtr to)
         classes->proximity = to->proximity;
         to->proximity      = NULL;
     }
-
-    if (from->absolute)
-    {
-        if (!to->absolute)
-        {
-            classes = to->unused_classes;
-            to->absolute = classes->absolute;
-            if (!to->absolute)
-            {
-                to->absolute = calloc(1, sizeof(AbsoluteClassRec));
-                if (!to->absolute)
-                    FatalError("[Xi] no memory for class shift.\n");
-            } else
-                classes->absolute = NULL;
-        }
-        memcpy(to->absolute, from->absolute, sizeof(AbsoluteClassRec));
-        to->absolute->sourceid = from->id;
-    } else if (to->absolute)
-    {
-        ClassesPtr classes;
-        classes = to->unused_classes;
-        classes->absolute = to->absolute;
-        to->absolute      = NULL;
-    }
 }
 
 /**
diff --git a/Xi/getdctl.c b/Xi/getdctl.c
index 3e81e94..4e04b8b 100644
--- a/Xi/getdctl.c
+++ b/Xi/getdctl.c
@@ -118,64 +118,6 @@ CopySwapDeviceResolution(ClientPtr client, 
ValuatorClassPtr v, char *buf,
     }
 }
 
-static void CopySwapDeviceAbsCalib (ClientPtr client, AbsoluteClassPtr dts,
-                                char *buf)
-{
-    char n;
-    xDeviceAbsCalibState *calib = (xDeviceAbsCalibState *) buf;
-
-    calib->control = DEVICE_ABS_CALIB;
-    calib->length = sizeof(xDeviceAbsCalibState);
-    calib->min_x = dts->min_x;
-    calib->max_x = dts->max_x;
-    calib->min_y = dts->min_y;
-    calib->max_y = dts->max_y;
-    calib->flip_x = dts->flip_x;
-    calib->flip_y = dts->flip_y;
-    calib->rotation = dts->rotation;
-    calib->button_threshold = dts->button_threshold;
-
-    if (client->swapped) {
-        swaps(&calib->control, n);
-        swaps(&calib->length, n);
-        swapl(&calib->min_x, n);
-        swapl(&calib->max_x, n);
-        swapl(&calib->min_y, n);
-        swapl(&calib->max_y, n);
-        swapl(&calib->flip_x, n);
-        swapl(&calib->flip_y, n);
-        swapl(&calib->rotation, n);
-        swapl(&calib->button_threshold, n);
-    }
-}
-
-static void CopySwapDeviceAbsArea (ClientPtr client, AbsoluteClassPtr dts,
-                                char *buf)
-{
-    char n;
-    xDeviceAbsAreaState *area = (xDeviceAbsAreaState *) buf;
-
-    area->control = DEVICE_ABS_AREA;
-    area->length = sizeof(xDeviceAbsAreaState);
-    area->offset_x = dts->offset_x;
-    area->offset_y = dts->offset_y;
-    area->width = dts->width;
-    area->height = dts->height;
-    area->screen = dts->screen;
-    area->following = dts->following;
-
-    if (client->swapped) {
-        swaps(&area->control, n);
-        swaps(&area->length, n);
-        swapl(&area->offset_x, n);
-        swapl(&area->offset_y, n);
-        swapl(&area->width, n);
-        swapl(&area->height, n);
-        swapl(&area->screen, n);
-        swapl(&area->following, n);
-    }
-}
-
 static void CopySwapDeviceCore (ClientPtr client, DeviceIntPtr dev, char *buf)
 {
     char n;
@@ -260,17 +202,8 @@ ProcXGetDeviceControl(ClientPtr client)
            (3 * sizeof(int) * dev->valuator->numAxes);
        break;
     case DEVICE_ABS_CALIB:
-        if (!dev->absolute)
-           return BadMatch;
-
-        total_length = sizeof(xDeviceAbsCalibState);
-        break;
     case DEVICE_ABS_AREA:
-        if (!dev->absolute)
-           return BadMatch;
-
-        total_length = sizeof(xDeviceAbsAreaState);
-        break;
+        return BadMatch;
     case DEVICE_CORE:
         total_length = sizeof(xDeviceCoreState);
         break;
@@ -290,12 +223,6 @@ ProcXGetDeviceControl(ClientPtr client)
     case DEVICE_RESOLUTION:
        CopySwapDeviceResolution(client, dev->valuator, buf, total_length);
        break;
-    case DEVICE_ABS_CALIB:
-        CopySwapDeviceAbsCalib(client, dev->absolute, buf);
-        break;
-    case DEVICE_ABS_AREA:
-        CopySwapDeviceAbsArea(client, dev->absolute, buf);
-        break;
     case DEVICE_CORE:
         CopySwapDeviceCore(client, dev, buf);
         break;
diff --git a/dix/devices.c b/dix/devices.c
index 636b1b6..534931c 100644
--- a/dix/devices.c
+++ b/dix/devices.c
@@ -1336,34 +1336,10 @@ InitPointerAccelerationScheme(DeviceIntPtr dev,
 Bool
 InitAbsoluteClassDeviceStruct(DeviceIntPtr dev)
 {
-    AbsoluteClassPtr abs;
-
-    abs = malloc(sizeof(AbsoluteClassRec));
-    if (!abs)
-        return FALSE;
-
-    /* we don't do anything sensible with these, but should */
-    abs->min_x = NO_AXIS_LIMITS;
-    abs->min_y = NO_AXIS_LIMITS;
-    abs->max_x = NO_AXIS_LIMITS;
-    abs->max_y = NO_AXIS_LIMITS;
-    abs->flip_x = 0;
-    abs->flip_y = 0;
-    abs->rotation = 0;
-    abs->button_threshold = 0;
-
-    abs->offset_x = 0;
-    abs->offset_y = 0;
-    abs->width = NO_AXIS_LIMITS;
-    abs->height = NO_AXIS_LIMITS;
-    abs->following = 0;
-    abs->screen = 0;
-
-    abs->sourceid = dev->id;
-
-    dev->absolute = abs;
-
-    return TRUE;
+    /* This is an API-preserving noop. Instructions: Kill when no more drivers
+     * call it. The infrastructure behind hasn't really been used, so any calls
+     * are likely just a declaration that the device is absolute. */
+    return FALSE;
 }
 
 Bool
diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c
index 3e6c2bc..e3bc4c5 100644
--- a/hw/kdrive/src/kinput.c
+++ b/hw/kdrive/src/kinput.c
@@ -477,7 +477,6 @@ KdPointerProc(DeviceIntPtr pDevice, int onoff)
         free(axes_labels);
 
         if (pi->inputClass == KD_TOUCHSCREEN) {
-            InitAbsoluteClassDeviceStruct(pDevice);
             xiclass = AtomFromName(XI_TOUCHSCREEN);
         }
         else {
diff --git a/hw/xquartz/darwin.c b/hw/xquartz/darwin.c
index 93697a9..33276c3 100644
--- a/hw/xquartz/darwin.c
+++ b/hw/xquartz/darwin.c
@@ -314,7 +314,6 @@ static int DarwinMouseProc(DeviceIntPtr pPointer, int what) 
{
                                     (PtrCtrlProcPtr)NoopDDA,
                                     GetMotionHistorySize(), NAXES,
                                     axes_labels);
-            InitAbsoluteClassDeviceStruct(pPointer);
 //            InitValuatorAxisStruct(pPointer, 0, 0, XQUARTZ_VALUATOR_LIMIT, 
1, 0, 1, Absolute);
 //            InitValuatorAxisStruct(pPointer, 1, 0, XQUARTZ_VALUATOR_LIMIT, 
1, 0, 1, Absolute);
             break;
@@ -362,7 +361,6 @@ static int DarwinTabletProc(DeviceIntPtr pPointer, int 
what) {
                                     GetMotionHistorySize(), NAXES,
                                     axes_labels);
             InitProximityClassDeviceStruct(pPointer);
-                       InitAbsoluteClassDeviceStruct(pPointer);
 
             InitValuatorAxisStruct(pPointer, 0, axes_labels[0], 0, 
XQUARTZ_VALUATOR_LIMIT, 1, 0, 1, Absolute);
             InitValuatorAxisStruct(pPointer, 1, axes_labels[1], 0, 
XQUARTZ_VALUATOR_LIMIT, 1, 0, 1, Absolute);
diff --git a/include/input.h b/include/input.h
index bdef038..2bb85ff 100644
--- a/include/input.h
+++ b/include/input.h
@@ -311,7 +311,10 @@ extern _X_EXPORT Bool InitPointerAccelerationScheme(
     DeviceIntPtr /*dev*/,
     int /*scheme*/);
 
-extern _X_EXPORT Bool InitAbsoluteClassDeviceStruct(
+/**
+ * This is not implemented and just returns FALSE.
+ */
+extern _X_EXPORT _X_DEPRECATED Bool InitAbsoluteClassDeviceStruct(
     DeviceIntPtr /*device*/);
 
 extern _X_EXPORT Bool InitFocusClassDeviceStruct(
diff --git a/include/inputstr.h b/include/inputstr.h
index 8509eb0..f63df80 100644
--- a/include/inputstr.h
+++ b/include/inputstr.h
@@ -317,27 +317,6 @@ typedef struct _ProximityClassRec {
     char       in_proximity;
 } ProximityClassRec, *ProximityClassPtr;
 
-typedef struct _AbsoluteClassRec {
-    int         sourceid;
-    /* Calibration. */
-    int         min_x;
-    int         max_x;
-    int         min_y;
-    int         max_y;
-    int         flip_x;
-    int         flip_y;
-    int                rotation;
-    int         button_threshold;
-
-    /* Area. */
-    int         offset_x;
-    int         offset_y;
-    int         width;
-    int         height;
-    int         screen;
-    XID                following;
-} AbsoluteClassRec, *AbsoluteClassPtr;
-
 typedef struct _KbdFeedbackClassRec *KbdFeedbackPtr;
 typedef struct _PtrFeedbackClassRec *PtrFeedbackPtr;
 typedef struct _IntegerFeedbackClassRec *IntegerFeedbackPtr;
@@ -392,7 +371,7 @@ typedef struct _ClassesRec {
     ButtonClassPtr     button;
     FocusClassPtr      focus;
     ProximityClassPtr  proximity;
-    AbsoluteClassPtr    absolute;
+    void*               _pad0; /* keep ABI during AbsoluteClass removal */
     KbdFeedbackPtr     kbdfeed;
     PtrFeedbackPtr     ptrfeed;
     IntegerFeedbackPtr intfeed;
@@ -517,7 +496,7 @@ typedef struct _DeviceIntRec {
     ButtonClassPtr     button;
     FocusClassPtr      focus;
     ProximityClassPtr  proximity;
-    AbsoluteClassPtr    absolute;
+    void*               _pad0;          /* keep ABI, was pointer to abs class 
*/
     KbdFeedbackPtr     kbdfeed;
     PtrFeedbackPtr     ptrfeed;
     IntegerFeedbackPtr intfeed;
-- 
1.7.3.4

From 27ab95e7ad000bfb7751e6e208d96985cc53d423 Mon Sep 17 00:00:00 2001
From: Simon Thum <[email protected]>
Date: Thu, 10 Mar 2011 21:03:40 +0100
Subject: [PATCH 6/6] xserver: remove AbsoluteClass, breaking the A(P|B)I

Signed-off-by: Simon Thum <[email protected]>
---
 dix/devices.c      |    9 ---------
 include/input.h    |    6 ------
 include/inputstr.h |    2 --
 3 files changed, 0 insertions(+), 17 deletions(-)

diff --git a/dix/devices.c b/dix/devices.c
index 534931c..fc2e468 100644
--- a/dix/devices.c
+++ b/dix/devices.c
@@ -1334,15 +1334,6 @@ InitPointerAccelerationScheme(DeviceIntPtr dev,
 }
 
 Bool
-InitAbsoluteClassDeviceStruct(DeviceIntPtr dev)
-{
-    /* This is an API-preserving noop. Instructions: Kill when no more drivers
-     * call it. The infrastructure behind hasn't really been used, so any calls
-     * are likely just a declaration that the device is absolute. */
-    return FALSE;
-}
-
-Bool
 InitFocusClassDeviceStruct(DeviceIntPtr dev)
 {
     FocusClassPtr focc;
diff --git a/include/input.h b/include/input.h
index 2bb85ff..c88263c 100644
--- a/include/input.h
+++ b/include/input.h
@@ -311,12 +311,6 @@ extern _X_EXPORT Bool InitPointerAccelerationScheme(
     DeviceIntPtr /*dev*/,
     int /*scheme*/);
 
-/**
- * This is not implemented and just returns FALSE.
- */
-extern _X_EXPORT _X_DEPRECATED Bool InitAbsoluteClassDeviceStruct(
-    DeviceIntPtr /*device*/);
-
 extern _X_EXPORT Bool InitFocusClassDeviceStruct(
     DeviceIntPtr /*device*/);
 
diff --git a/include/inputstr.h b/include/inputstr.h
index f63df80..f10a3bd 100644
--- a/include/inputstr.h
+++ b/include/inputstr.h
@@ -371,7 +371,6 @@ typedef struct _ClassesRec {
     ButtonClassPtr     button;
     FocusClassPtr      focus;
     ProximityClassPtr  proximity;
-    void*               _pad0; /* keep ABI during AbsoluteClass removal */
     KbdFeedbackPtr     kbdfeed;
     PtrFeedbackPtr     ptrfeed;
     IntegerFeedbackPtr intfeed;
@@ -496,7 +495,6 @@ typedef struct _DeviceIntRec {
     ButtonClassPtr     button;
     FocusClassPtr      focus;
     ProximityClassPtr  proximity;
-    void*               _pad0;          /* keep ABI, was pointer to abs class 
*/
     KbdFeedbackPtr     kbdfeed;
     PtrFeedbackPtr     ptrfeed;
     IntegerFeedbackPtr intfeed;
-- 
1.7.3.4

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to