From fad10cb38ef2433c82f8a43d3b7d64e323728060 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Fri, 18 Mar 2011 11:06:57 +1000 Subject: xfree86: print out which driver is about to be used. Makes reading the log file a lot easier for those that don't magically recognise the log spew by the individual drivers. Signed-off-by: Peter Hutterer Reviewed-by: Dan Nicholson --- hw/xfree86/common/xf86Xinput.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c index e3264e6a9..2bac33a09 100644 --- a/hw/xfree86/common/xf86Xinput.c +++ b/hw/xfree86/common/xf86Xinput.c @@ -775,6 +775,8 @@ xf86NewInputDevice(InputInfoPtr pInfo, DeviceIntPtr *pdev, BOOL enable) goto unwind; } + xf86Msg(X_INFO, "Using input driver '%s' for '%s'\n", drv->driverName, pInfo->name); + if (!drv->PreInit) { xf86Msg(X_ERROR, "Input driver `%s' has no PreInit function (ignoring)\n", -- cgit v1.2.3 From 6243332782f2d286d49f1dec8a628b0a403665fd Mon Sep 17 00:00:00 2001 From: Erkki Seppälä Date: Fri, 18 Mar 2011 16:35:36 +0200 Subject: config: handle device change event properly MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit wakeup_handler in udev.c wasn't dealing with udev change events. There are situations when a device can gain its input capabilities after it has been added to the system and therefore the change events must be handled as well. The change is handled as a consecutive device removal and addition. Signed-off-by: Erkki Seppälä Signed-off-by: Stefan Kost Reviewed-by: Peter Hutterer Signed-off-by: Peter Hutterer --- config/udev.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/config/udev.c b/config/udev.c index 678e47a39..9ac34ee50 100644 --- a/config/udev.c +++ b/config/udev.c @@ -255,6 +255,10 @@ wakeup_handler(pointer data, int err, pointer read_mask) device_added(udev_device); else if (!strcmp(action, "remove")) device_removed(udev_device); + else if (!strcmp(action, "change")) { + device_removed(udev_device); + device_added(udev_device); + } } udev_device_unref(udev_device); } -- cgit v1.2.3 From 33e257ab43ebf35e838b80c416762e9b743e9385 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Tue, 22 Mar 2011 11:53:00 +1000 Subject: test: when unit tests are enabled, build them during "make" Catch compiler errors that were otherwise only spotted on make check. Signed-off-by: Peter Hutterer Reviewed-by: Dan Nicholson --- test/Makefile.am | 4 ++-- test/xi2/Makefile.am | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/test/Makefile.am b/test/Makefile.am index 34f21d7ed..f3265b788 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -2,10 +2,10 @@ if ENABLE_UNIT_TESTS if HAVE_GLIB if HAVE_LD_WRAP SUBDIRS= . xi2 -check_PROGRAMS = xkb input xtest list +noinst_PROGRAMS = xkb input xtest list check_LTLIBRARIES = libxservertest.la -TESTS=$(check_PROGRAMS) +TESTS=$(noinst_PROGRAMS) AM_CFLAGS = $(DIX_CFLAGS) $(GLIB_CFLAGS) @XORG_CFLAGS@ INCLUDES = @XORG_INCS@ diff --git a/test/xi2/Makefile.am b/test/xi2/Makefile.am index e19786973..1b9bfe08e 100644 --- a/test/xi2/Makefile.am +++ b/test/xi2/Makefile.am @@ -1,7 +1,7 @@ if ENABLE_UNIT_TESTS if HAVE_GLIB if HAVE_LD_WRAP -check_PROGRAMS = \ +noinst_PROGRAMS = \ protocol-xiqueryversion \ protocol-xiquerydevice \ protocol-xiselectevents \ @@ -12,7 +12,7 @@ check_PROGRAMS = \ protocol-xiwarppointer \ protocol-eventconvert -TESTS=$(check_PROGRAMS) +TESTS=$(noinst_PROGRAMS) AM_CFLAGS = $(DIX_CFLAGS) $(GLIB_CFLAGS) @XORG_CFLAGS@ INCLUDES = @XORG_INCS@ -- cgit v1.2.3 From 9eaecb1bfe358a0c5f24645a29d6c377c0c4b37c Mon Sep 17 00:00:00 2001 From: Simon Thum Date: Sun, 20 Mar 2011 16:28:22 +0100 Subject: xquartz: simplify ChangeDeviceControl Signed-off-by: Simon Thum Reviewed-by: Peter Hutterer Signed-off-by: Peter Hutterer --- hw/xquartz/darwinXinput.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/hw/xquartz/darwinXinput.c b/hw/xquartz/darwinXinput.c index 8bb83ca37..3ef34fec0 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; } -- cgit v1.2.3 From dee83dff4b8fbf1351263beaf2d531d033b6d0c4 Mon Sep 17 00:00:00 2001 From: Simon Thum Date: Sat, 5 Mar 2011 04:59:33 +0100 Subject: kdrive: don't pretent to support DEVICE_ABS_* in ChangeDeviceControl Signed-off-by: Simon Thum Reviewed-by: Peter Hutterer Signed-off-by: Peter Hutterer --- hw/kdrive/src/kinput.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c index 608f3a725..3e6c2bc1c 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: -- cgit v1.2.3 From 118ef6f806f629a8e2ad61e4f2a43820b0fa621c Mon Sep 17 00:00:00 2001 From: Simon Thum Date: Sat, 5 Mar 2011 05:01:22 +0100 Subject: xf86: don't pretend to support DEVICE_ABS_* in ChangeDeviceControl Signed-off-by: Simon Thum Reviewed-by: Peter Hutterer Signed-off-by: Peter Hutterer --- hw/xfree86/common/xf86Xinput.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c index 2bac33a09..ae22ef268 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: -- cgit v1.2.3 From 2103d61909c7e6bd345622962df7784a19df72c5 Mon Sep 17 00:00:00 2001 From: Simon Thum Date: Sat, 5 Mar 2011 05:02:54 +0100 Subject: simplify ChangeDeviceControl in stubs Signed-off-by: Simon Thum Reviewed-by: Peter Hutterer Signed-off-by: Peter Hutterer --- Xi/stubs.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/Xi/stubs.c b/Xi/stubs.c index d9e8eec72..6a4c18158 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; } -- cgit v1.2.3 From 633b81e8ba09cc6a1ea8b43f323874fda2cf0bde Mon Sep 17 00:00:00 2001 From: Simon Thum Date: Wed, 9 Mar 2011 20:48:22 +0100 Subject: xserver: remove AbsoluteClassRec keeping the ABI This removes the struct, but keeps InitAbsoluteClassDeviceStruct as a no-op and preserves related struct layout. Signed-off-by: Simon Thum Reviewed-by: Peter Hutterer Signed-off-by: Peter Hutterer --- 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 901a0e419..4c4aebac6 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 c7089bb69..5b207bc4b 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 3e81e9479..4e04b8b06 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 636b1b661..534931c3e 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 3e6c2bc1c..e3bc4c523 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 93697a994..33276c389 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 bdef0389e..2bb85ffaa 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 8509eb024..f63df8087 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; -- cgit v1.2.3