aboutsummaryrefslogtreecommitdiffstats
path: root/x11-drivers
diff options
context:
space:
mode:
authorbapt <bapt@FreeBSD.org>2017-01-24 06:22:53 +0800
committerbapt <bapt@FreeBSD.org>2017-01-24 06:22:53 +0800
commitfe6ec0f481a1230faf1a834a1454b38f73e20974 (patch)
treeae47223fbca394f6096ee45c5fa961b9b03d4a2d /x11-drivers
parent3773654911cf8aaf9d54032d076717a2b57c2591 (diff)
downloadfreebsd-ports-gnome-fe6ec0f481a1230faf1a834a1454b38f73e20974.tar.gz
freebsd-ports-gnome-fe6ec0f481a1230faf1a834a1454b38f73e20974.tar.zst
freebsd-ports-gnome-fe6ec0f481a1230faf1a834a1454b38f73e20974.zip
Import few patches from upstream to allow building with newer xorg
Note that those drivers are barely maintained and might disappear in the futur PR: 216270 Submitted by: matthew@reztek.cz
Diffstat (limited to 'x11-drivers')
-rw-r--r--x11-drivers/xf86-input-acecad/Makefile2
-rw-r--r--x11-drivers/xf86-input-acecad/files/patch-git_01_fd61e5386
-rw-r--r--x11-drivers/xf86-input-acecad/files/patch-git_02_1fea65334
-rw-r--r--x11-drivers/xf86-input-acecad/files/patch-git_04_ef1e9cf165
-rw-r--r--x11-drivers/xf86-input-acecad/files/patch-git_05_21f7f17121
-rw-r--r--x11-drivers/xf86-input-acecad/files/patch-git_06_9385ae997
-rw-r--r--x11-drivers/xf86-input-acecad/files/patch-git_07_ec2c4ea25
-rw-r--r--x11-drivers/xf86-input-acecad/files/patch-git_08_39b97cc26
-rw-r--r--x11-drivers/xf86-input-acecad/files/patch-git_09_e76e20d26
-rw-r--r--x11-drivers/xf86-input-acecad/files/patch-git_10_2f1a5b472
-rw-r--r--x11-drivers/xf86-input-acecad/files/patch-src_acecad.c31
11 files changed, 684 insertions, 1 deletions
diff --git a/x11-drivers/xf86-input-acecad/Makefile b/x11-drivers/xf86-input-acecad/Makefile
index 3c7a395f1593..66d512dc3ea2 100644
--- a/x11-drivers/xf86-input-acecad/Makefile
+++ b/x11-drivers/xf86-input-acecad/Makefile
@@ -2,7 +2,7 @@
PORTNAME= xf86-input-acecad
PORTVERSION= 1.5.0
-PORTREVISION= 6
+PORTREVISION= 7
CATEGORIES= x11-drivers
MAINTAINER= x11@FreeBSD.org
diff --git a/x11-drivers/xf86-input-acecad/files/patch-git_01_fd61e53 b/x11-drivers/xf86-input-acecad/files/patch-git_01_fd61e53
new file mode 100644
index 000000000000..0d49ebad3837
--- /dev/null
+++ b/x11-drivers/xf86-input-acecad/files/patch-git_01_fd61e53
@@ -0,0 +1,86 @@
+From fd61e53ed08cec2b3af688a55507477f6ef30544 Mon Sep 17 00:00:00 2001
+From: Cyril Brulebois <kibi@debian.org>
+Date: Fri, 3 Jun 2011 15:59:14 +0200
+Subject: =?UTF-8?q?Avoid=20=E2=80=9C'ReverseConvertProc'=20defined=20but?=
+ =?UTF-8?q?=20not=20used=E2=80=9D=20warning.?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Move this function next to its unique caller (AceCadPreInit), and only
+declare/define it when the input ABI is strictly less than 12.
+
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+Reviewed-by: Daniel Stone <daniel@fooishbar.org>
+Signed-off-by: Cyril Brulebois <kibi@debian.org>
+
+diff --git a/src/acecad.c b/src/acecad.c
+index 6259f21..f5a2213 100644
+--- src/acecad.c
++++ src/acecad.c
+@@ -370,6 +370,21 @@ SetupProc_fail:
+ return NULL;
+ }
+
++static Bool
++ReverseConvertProc (InputInfoPtr local,
++ int x, int y,
++ int *valuators)
++{
++ AceCadPrivatePtr priv = (AceCadPrivatePtr)(local->private);
++
++ // xf86Msg(X_INFO, "%s: reverse coordinate conversion in : %d, %d\n", local->name, x, y);
++ valuators[0] = x * priv->acecadMaxX / screenInfo.screens[0]->width;
++ valuators[1] = y * priv->acecadMaxY / screenInfo.screens[0]->height;
++ // xf86Msg(X_INFO, "%s: reverse coordinate conversion out: %d, %d\n", local->name, valuators[0], valuators[1]);
++
++ return TRUE;
++}
++
+ static int
+ NewAceCadPreInit(InputDriverPtr drv, InputInfoPtr local, int flags)
+ #else
+@@ -1071,22 +1086,6 @@ ConvertProc (InputInfoPtr local, int first, int num,
+ }
+
+
+-static Bool
+-ReverseConvertProc (InputInfoPtr local,
+- int x, int y,
+- int *valuators)
+-{
+- AceCadPrivatePtr priv = (AceCadPrivatePtr)(local->private);
+-
+- // xf86Msg(X_INFO, "%s: reverse coordinate conversion in : %d, %d\n", local->name, x, y);
+- valuators[0] = x * priv->acecadMaxX / screenInfo.screens[0]->width;
+- valuators[1] = y * priv->acecadMaxY / screenInfo.screens[0]->height;
+- // xf86Msg(X_INFO, "%s: reverse coordinate conversion out: %d, %d\n", local->name, valuators[0], valuators[1]);
+-
+- return TRUE;
+-}
+-
+-
+ #define WriteString(str)\
+ XisbWrite (priv->buffer, (unsigned char *)(str), strlen(str))
+
+diff --git a/src/acecad.h b/src/acecad.h
+index a2b5c66..bd8e997 100644
+--- src/acecad.h
++++ src/acecad.h
+@@ -102,12 +102,12 @@ static Bool DeviceClose (DeviceIntPtr);
+ static Bool DeviceInit (DeviceIntPtr);
+ static void ReadInput (InputInfoPtr);
+ static Bool ConvertProc (InputInfoPtr, int, int, int, int, int, int, int, int, int *, int *);
+-static Bool ReverseConvertProc(InputInfoPtr , int , int , int*);
+ static Bool QueryHardware (AceCadPrivatePtr);
+ static void NewPacket (AceCadPrivatePtr priv);
+ static Bool AceCadGetPacket (AceCadPrivatePtr);
+ #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
+ static InputInfoPtr AceCadPreInit(InputDriverPtr, IDevPtr , int);
++static Bool ReverseConvertProc(InputInfoPtr , int , int , int*);
+ #else
+ static int AceCadPreInit(InputDriverPtr, InputInfoPtr , int);
+ #endif
+--
+cgit v0.10.2
+
diff --git a/x11-drivers/xf86-input-acecad/files/patch-git_02_1fea653 b/x11-drivers/xf86-input-acecad/files/patch-git_02_1fea653
new file mode 100644
index 000000000000..a3949712be0d
--- /dev/null
+++ b/x11-drivers/xf86-input-acecad/files/patch-git_02_1fea653
@@ -0,0 +1,34 @@
+From 1fea6530eeca06b0d8d15a9327f87063292e1e6d Mon Sep 17 00:00:00 2001
+From: Cyril Brulebois <kibi@debian.org>
+Date: Fri, 3 Jun 2011 15:59:14 +0200
+Subject: Silence gcc: report_{x, y} are getting initialized.
+
+Get us rid of:
+| CC acecad.lo
+| acecad.c: In function 'USBReadInput':
+| acecad.c:1052:43: warning: 'report_y' may be used uninitialized in this function [-Wuninitialized]
+| acecad.c:1052:43: warning: 'report_x' may be used uninitialized in this function [-Wuninitialized]
+
+Both code paths (with XORG_BOTCHED_INPUT or not) will lead report_x and
+report_y to be set, but make sure the compiler stops guessing.
+
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+Reviewed-by: Daniel Stone <daniel@fooishbar.org>
+Signed-off-by: Cyril Brulebois <kibi@debian.org>
+
+diff --git a/src/acecad.c b/src/acecad.c
+index f5a2213..1e2f0c0 100644
+--- src/acecad.c
++++ src/acecad.c
+@@ -919,7 +919,7 @@ USBReadInput (InputInfoPtr local)
+ int x = priv->acecadOldX;
+ int y = priv->acecadOldY;
+ int z = priv->acecadOldZ;
+- int report_x, report_y;
++ int report_x = 0, report_y = 0;
+ int prox = priv->acecadOldProximity;
+ int buttons = priv->acecadOldButtons;
+ int is_core_pointer = 0;
+--
+cgit v0.10.2
+
diff --git a/x11-drivers/xf86-input-acecad/files/patch-git_04_ef1e9cf b/x11-drivers/xf86-input-acecad/files/patch-git_04_ef1e9cf
new file mode 100644
index 000000000000..3ea550b194f4
--- /dev/null
+++ b/x11-drivers/xf86-input-acecad/files/patch-git_04_ef1e9cf
@@ -0,0 +1,165 @@
+From ef1e9cf34e8f1ec2513dd6bd36d824b54e841ea7 Mon Sep 17 00:00:00 2001
+From: Cyril Brulebois <kibi@debian.org>
+Date: Fri, 3 Jun 2011 15:59:15 +0200
+Subject: Drop support for pre-input ABI 12 servers.
+
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+Reviewed-by: Daniel Stone <daniel@fooishbar.org>
+Signed-off-by: Cyril Brulebois <kibi@debian.org>
+
+diff --git a/configure.ac b/configure.ac
+index 4c76754..d4a404d 100644
+--- configure.ac
++++ configure.ac
+@@ -55,7 +55,7 @@ AC_CHECK_HEADERS([linux/input.h sysfs/libsysfs.h])
+ XORG_DRIVER_CHECK_EXT(RANDR, randrproto)
+
+ # Obtain compiler/linker options from server and required extensions
+-PKG_CHECK_MODULES(XORG, [xorg-server >= 1.0.99.901] xproto kbproto inputproto $REQUIRED_MODULES)
++PKG_CHECK_MODULES(XORG, [xorg-server >= 1.10] xproto kbproto inputproto $REQUIRED_MODULES)
+
+ # Define a configure option for an alternate input module directory
+ AC_ARG_WITH(xorg-module-dir,
+diff --git a/src/acecad.c b/src/acecad.c
+index d60b3b6..17e141f 100644
+--- src/acecad.c
++++ src/acecad.c
+@@ -90,6 +90,10 @@
+ #endif
+ #define DBG(lvl, f) {if ((lvl) <= xf86GetVerbosity()) f;}
+
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
++#error "XINPUT ABI 12 required."
++#endif
++
+ /*****************************************************************************
+ * Local Headers
+ ****************************************************************************/
+@@ -331,66 +335,8 @@ ProbeFound:
+
+ #endif
+
+-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
+-static int NewAceCadPreInit(InputDriverPtr drv, InputInfoPtr dev, int flags);
+-
+-static InputInfoPtr
+-AceCadPreInit(InputDriverPtr drv, IDevPtr dev, int flags)
+-{
+- InputInfoPtr local = xf86AllocateInput(drv, 0);
+- AceCadPrivatePtr priv = calloc (1, sizeof(AceCadPrivateRec));
+-
+- if ((!local))
+- goto SetupProc_fail;
+-
+- local->name = dev->identifier;
+- local->type_name = XI_TABLET;
+- local->flags = XI86_SEND_DRAG_EVENTS;
+-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0
+- local->motion_history_proc = xf86GetMotionEvents;
+-#endif
+- local->control_proc = NULL;
+- local->switch_mode = NULL;
+- local->conversion_proc = ConvertProc;
+- local->reverse_conversion_proc = ReverseConvertProc;
+- local->dev = NULL;
+- local->private = priv;
+- local->private_flags = 0;
+- local->conf_idev = dev;
+- /*local->always_core_feedback = 0;*/
+-
+- xf86CollectInputOptions(local, default_options, NULL);
+-
+- xf86OptionListReport(local->options);
+-
+- if (NewAceCadPreInit(drv, local, flags) == Success)
+- return local;
+-
+-SetupProc_fail:
+- return NULL;
+-}
+-
+-static Bool
+-ReverseConvertProc (InputInfoPtr local,
+- int x, int y,
+- int *valuators)
+-{
+- AceCadPrivatePtr priv = (AceCadPrivatePtr)(local->private);
+-
+- // xf86Msg(X_INFO, "%s: reverse coordinate conversion in : %d, %d\n", local->name, x, y);
+- valuators[0] = x * priv->acecadMaxX / screenInfo.screens[0]->width;
+- valuators[1] = y * priv->acecadMaxY / screenInfo.screens[0]->height;
+- // xf86Msg(X_INFO, "%s: reverse coordinate conversion out: %d, %d\n", local->name, valuators[0], valuators[1]);
+-
+- return TRUE;
+-}
+-
+-static int
+-NewAceCadPreInit(InputDriverPtr drv, InputInfoPtr local, int flags)
+-#else
+ static int
+ AceCadPreInit(InputDriverPtr drv, InputInfoPtr local, int flags)
+-#endif
+ {
+ AceCadPrivatePtr priv = calloc (1, sizeof(AceCadPrivateRec));
+ int speed;
+@@ -500,10 +446,6 @@ AceCadPreInit(InputDriverPtr drv, InputInfoPtr local, int flags)
+
+ xf86ProcessCommonOptions(local, local->options);
+
+-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
+- local->flags |= XI86_CONFIGURED;
+-#endif
+-
+ if (local->fd != -1)
+ {
+ RemoveEnabledDevice (local->fd);
+@@ -709,9 +651,6 @@ DeviceInit (DeviceIntPtr dev)
+ #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
+ axes_labels,
+ #endif
+-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 3
+- xf86GetMotionEvents,
+-#endif
+ history_size,
+ ((priv->flags & ABSOLUTE_FLAG)? Absolute: Relative)|OutOfProximity)
+ == FALSE)
+@@ -818,9 +757,6 @@ ReadInput (InputInfoPtr local)
+ /*xf86Msg(X_INFO, "ACECAD Tablet Read Input\n");*/
+
+ is_absolute = (priv->flags & ABSOLUTE_FLAG);
+-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0
+- is_core_pointer = xf86IsCorePointer(local->dev);
+-#endif
+
+ /*
+ * set blocking to -1 on the first call because we know there is data to
+@@ -923,9 +859,6 @@ USBReadInput (InputInfoPtr local)
+ int prox = priv->acecadOldProximity;
+ int buttons = priv->acecadOldButtons;
+ int is_core_pointer = 0;
+-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0
+- is_core_pointer = xf86IsCorePointer(local->dev);
+-#endif
+ /* Is autodev active? */
+ int autodev = priv->flags & AUTODEV_FLAG;
+ /* Was the device available last time we checked? */
+diff --git a/src/acecad.h b/src/acecad.h
+index bd8e997..b9291c7 100644
+--- src/acecad.h
++++ src/acecad.h
+@@ -105,12 +105,7 @@ static Bool ConvertProc (InputInfoPtr, int, int, int, int, int, int, int, int, i
+ static Bool QueryHardware (AceCadPrivatePtr);
+ static void NewPacket (AceCadPrivatePtr priv);
+ static Bool AceCadGetPacket (AceCadPrivatePtr);
+-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
+-static InputInfoPtr AceCadPreInit(InputDriverPtr, IDevPtr , int);
+-static Bool ReverseConvertProc(InputInfoPtr , int , int , int*);
+-#else
+ static int AceCadPreInit(InputDriverPtr, InputInfoPtr , int);
+-#endif
+ #ifdef HAVE_LINUX_INPUT_H
+ static void USBReadInput (InputInfoPtr);
+ static Bool USBQueryHardware (InputInfoPtr);
+--
+cgit v0.10.2
+
diff --git a/x11-drivers/xf86-input-acecad/files/patch-git_05_21f7f17 b/x11-drivers/xf86-input-acecad/files/patch-git_05_21f7f17
new file mode 100644
index 000000000000..269bceb62ed9
--- /dev/null
+++ b/x11-drivers/xf86-input-acecad/files/patch-git_05_21f7f17
@@ -0,0 +1,121 @@
+From 21f7f1705d2c0b46ce19367d5ac8a4c225d755ef Mon Sep 17 00:00:00 2001
+From: Cyril Brulebois <kibi@debian.org>
+Date: Fri, 3 Jun 2011 15:59:15 +0200
+Subject: Remove checks on the ABI now that 12 or higher is required.
+
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+Reviewed-by: Daniel Stone <daniel@fooishbar.org>
+Signed-off-by: Cyril Brulebois <kibi@debian.org>
+
+diff --git a/src/acecad.c b/src/acecad.c
+index 17e141f..de2577e 100644
+--- src/acecad.c
++++ src/acecad.c
+@@ -79,10 +79,8 @@
+ #endif
+ #endif
+
+-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
+ #include <X11/Xatom.h>
+ #include <xserver-properties.h>
+-#endif
+
+ /* Previously found in xf86Xinput.h */
+ #ifdef DBG
+@@ -130,9 +128,7 @@ _X_EXPORT InputDriverRec ACECAD =
+ AceCadPreInit,
+ NULL,
+ NULL,
+-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
+ default_options
+-#endif
+ };
+
+ static XF86ModuleVersionInfo VersionRec =
+@@ -599,7 +595,6 @@ DeviceInit (DeviceIntPtr dev)
+ AceCadPrivatePtr priv = (AceCadPrivatePtr) (local->private);
+ unsigned char map[] = {0, 1, 2, 3};
+ int history_size;
+-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
+ Atom btn_labels[3];
+ Atom axes_labels[3];
+
+@@ -618,15 +613,12 @@ DeviceInit (DeviceIntPtr dev)
+ axes_labels[1] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_Y);
+ axes_labels[2] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_Z);
+ }
+-#endif
+
+ xf86MsgVerb(X_INFO, 4, "%s Init\n", local->name);
+
+ /* 3 boutons */
+ if (InitButtonClassDeviceStruct (dev, 3,
+-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
+ btn_labels,
+-#endif
+ map) == FALSE)
+ {
+ xf86Msg(X_ERROR, "%s: unable to allocate ButtonClassDeviceStruct\n", local->name);
+@@ -648,9 +640,7 @@ DeviceInit (DeviceIntPtr dev)
+
+ /* 3 axes */
+ if (InitValuatorClassDeviceStruct (dev, 3,
+-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
+ axes_labels,
+-#endif
+ history_size,
+ ((priv->flags & ABSOLUTE_FLAG)? Absolute: Relative)|OutOfProximity)
+ == FALSE)
+@@ -663,9 +653,7 @@ DeviceInit (DeviceIntPtr dev)
+
+ InitValuatorAxisStruct(dev,
+ 0,
+-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
+ axes_labels[0],
+-#endif
+ 0, /* min val */
+ #if XORG_BOTCHED_INPUT
+ screenInfo.screens[0]->width,
+@@ -675,15 +663,11 @@ DeviceInit (DeviceIntPtr dev)
+ 1000, /* resolution */
+ 0, /* min_res */
+ 1000 /* max_res */
+-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
+ , Absolute
+-#endif
+ );
+ InitValuatorAxisStruct(dev,
+ 1,
+-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
+ axes_labels[1],
+-#endif
+ 0, /* min val */
+ #if XORG_BOTCHED_INPUT
+ screenInfo.screens[0]->height,
+@@ -693,23 +677,17 @@ DeviceInit (DeviceIntPtr dev)
+ 1000, /* resolution */
+ 0, /* min_res */
+ 1000 /* max_res */
+-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
+ , Absolute
+-#endif
+ );
+ InitValuatorAxisStruct(dev,
+ 2,
+-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
+ axes_labels[2],
+-#endif
+ 0, /* min val */
+ priv->acecadMaxZ, /* max val */
+ 1000, /* resolution */
+ 0, /* min_res */
+ 1000 /* max_res */
+-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
+ , Absolute
+-#endif
+ );
+
+ }
+--
+cgit v0.10.2
+
diff --git a/x11-drivers/xf86-input-acecad/files/patch-git_06_9385ae9 b/x11-drivers/xf86-input-acecad/files/patch-git_06_9385ae9
new file mode 100644
index 000000000000..cb609dadcab1
--- /dev/null
+++ b/x11-drivers/xf86-input-acecad/files/patch-git_06_9385ae9
@@ -0,0 +1,97 @@
+From 9385ae905aca9e679e698f0491e0bf7e30a35092 Mon Sep 17 00:00:00 2001
+From: Cyril Brulebois <kibi@debian.org>
+Date: Fri, 3 Jun 2011 15:59:16 +0200
+Subject: Remove pointless checks on is_core_pointer.
+
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+Reviewed-by: Daniel Stone <daniel@fooishbar.org>
+Signed-off-by: Cyril Brulebois <kibi@debian.org>
+
+diff --git a/src/acecad.c b/src/acecad.c
+index de2577e..ad6d793 100644
+--- src/acecad.c
++++ src/acecad.c
+@@ -729,7 +729,7 @@ ReadInput (InputInfoPtr local)
+ {
+ int x, y, z;
+ int prox, buttons;
+- int is_core_pointer = 0, is_absolute;
++ int is_absolute;
+ AceCadPrivatePtr priv = (AceCadPrivatePtr) (local->private);
+
+ /*xf86Msg(X_INFO, "ACECAD Tablet Read Input\n");*/
+@@ -772,11 +772,10 @@ ReadInput (InputInfoPtr local)
+ if (prox)
+ {
+ if (!(priv->acecadOldProximity))
+- if (!is_core_pointer)
+- {
+- /*xf86Msg(X_INFO, "ACECAD Tablet ProxIN %d %d %d\n",x, y, z);*/
+- xf86PostProximityEvent(local->dev, 1, 0, 3 , x, y, z);
+- }
++ {
++ /*xf86Msg(X_INFO, "ACECAD Tablet ProxIN %d %d %d\n",x, y, z);*/
++ xf86PostProximityEvent(local->dev, 1, 0, 3 , x, y, z);
++ }
+
+ if ((is_absolute && ((priv->acecadOldX != x) || (priv->acecadOldY != y) || (priv->acecadOldZ != z)))
+ || (!is_absolute && (x || y)))
+@@ -809,12 +808,11 @@ ReadInput (InputInfoPtr local)
+ }
+ else
+ {
+- if (!is_core_pointer)
+- if (priv->acecadOldProximity)
+- {
+- /*xf86Msg(X_INFO, "ACECAD Tablet ProxOUT %d %d %d\n",x, y, z);*/
+- xf86PostProximityEvent(local->dev, 0, 0, 3, x,y,z);
+- }
++ if (priv->acecadOldProximity)
++ {
++ /*xf86Msg(X_INFO, "ACECAD Tablet ProxOUT %d %d %d\n",x, y, z);*/
++ xf86PostProximityEvent(local->dev, 0, 0, 3, x,y,z);
++ }
+ priv->acecadOldProximity = 0;
+ }
+ }
+@@ -836,7 +834,6 @@ USBReadInput (InputInfoPtr local)
+ int report_x = 0, report_y = 0;
+ int prox = priv->acecadOldProximity;
+ int buttons = priv->acecadOldButtons;
+- int is_core_pointer = 0;
+ /* Is autodev active? */
+ int autodev = priv->flags & AUTODEV_FLAG;
+ /* Was the device available last time we checked? */
+@@ -935,10 +932,9 @@ USBReadInput (InputInfoPtr local)
+ report_y = y;
+ #endif
+ if (!(priv->acecadOldProximity))
+- if (!is_core_pointer)
+- {
+- xf86PostProximityEvent(local->dev, 1, 0, 3 , report_x, report_y, z);
+- }
++ {
++ xf86PostProximityEvent(local->dev, 1, 0, 3 , report_x, report_y, z);
++ }
+
+
+ xf86PostMotionEvent(local->dev, 1, 0, 3, report_x, report_y, z);
+@@ -957,11 +953,10 @@ USBReadInput (InputInfoPtr local)
+ }
+ else
+ {
+- if (!is_core_pointer)
+- if (priv->acecadOldProximity)
+- {
+- xf86PostProximityEvent(local->dev, 0, 0, 3, report_x, report_y, z);
+- }
++ if (priv->acecadOldProximity)
++ {
++ xf86PostProximityEvent(local->dev, 0, 0, 3, report_x, report_y, z);
++ }
+ priv->acecadOldProximity = 0;
+ }
+
+--
+cgit v0.10.2
+
diff --git a/x11-drivers/xf86-input-acecad/files/patch-git_07_ec2c4ea b/x11-drivers/xf86-input-acecad/files/patch-git_07_ec2c4ea
new file mode 100644
index 000000000000..32fa8ebd0e4a
--- /dev/null
+++ b/x11-drivers/xf86-input-acecad/files/patch-git_07_ec2c4ea
@@ -0,0 +1,25 @@
+From ec2c4ead497133ef20d5ef5a9b481b38e1e0f7a2 Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Mon, 27 Jun 2011 13:13:54 +1000
+Subject: Assign local->private after allocating.
+
+It is detrimental to the user experience when the driver tries to derefernce
+null pointers.
+
+Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+diff --git a/src/acecad.c b/src/acecad.c
+index ad6d793..604fe91 100644
+--- src/acecad.c
++++ src/acecad.c
+@@ -343,6 +343,7 @@ AceCadPreInit(InputDriverPtr drv, InputInfoPtr local, int flags)
+ return BadAlloc;
+
+ memset(priv, 0, sizeof(AceCadPrivateRec));
++ local->private = priv;
+
+ local->device_control = DeviceControl;
+
+--
+cgit v0.10.2
+
diff --git a/x11-drivers/xf86-input-acecad/files/patch-git_08_39b97cc b/x11-drivers/xf86-input-acecad/files/patch-git_08_39b97cc
new file mode 100644
index 000000000000..ce0a5d04295e
--- /dev/null
+++ b/x11-drivers/xf86-input-acecad/files/patch-git_08_39b97cc
@@ -0,0 +1,26 @@
+From 39b97cc0138417141b245179fc8555bbb365e879 Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Fri, 8 Jul 2011 12:24:16 +1000
+Subject: Always set the type name.
+
+The server assigns "UNKNOWN", override it with something more specific.
+
+Introduced in f85c4b580c074f7054eac98753d1f4e91f08305e.
+
+Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+diff --git a/src/acecad.c b/src/acecad.c
+index 604fe91..2b6aa45 100644
+--- src/acecad.c
++++ src/acecad.c
+@@ -346,6 +346,7 @@ AceCadPreInit(InputDriverPtr drv, InputInfoPtr local, int flags)
+ local->private = priv;
+
+ local->device_control = DeviceControl;
++ local->type_name = XI_TABLET;
+
+ priv->acecadInc = xf86SetIntOption(local->options, "Increment", 0 );
+
+--
+cgit v0.10.2
+
diff --git a/x11-drivers/xf86-input-acecad/files/patch-git_09_e76e20d b/x11-drivers/xf86-input-acecad/files/patch-git_09_e76e20d
new file mode 100644
index 000000000000..aa0bdb1aaefc
--- /dev/null
+++ b/x11-drivers/xf86-input-acecad/files/patch-git_09_e76e20d
@@ -0,0 +1,26 @@
+From e76e20d4d4a39e139a778411a2ed09ec35c2046e Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Tue, 19 Jul 2011 09:29:28 +1000
+Subject: Dont call xf86DeleteInput on PreInit failure.
+
+The server calls this for us once PreInit returns with an error,
+calling it during PreInit means the server continues to use
+already free'd memory.
+
+Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+diff --git a/src/acecad.c b/src/acecad.c
+index 2b6aa45..a3326a0 100644
+--- src/acecad.c
++++ src/acecad.c
+@@ -471,7 +471,6 @@ SetupProc_fail:
+ if (local)
+ local->private = NULL;
+ }
+- xf86DeleteInput(local, 0);
+ return BadAlloc;
+ }
+
+--
+cgit v0.10.2
+
diff --git a/x11-drivers/xf86-input-acecad/files/patch-git_10_2f1a5b4 b/x11-drivers/xf86-input-acecad/files/patch-git_10_2f1a5b4
new file mode 100644
index 000000000000..1c0aca9a700b
--- /dev/null
+++ b/x11-drivers/xf86-input-acecad/files/patch-git_10_2f1a5b4
@@ -0,0 +1,72 @@
+From 2f1a5b44f62028f2608c0c94e58154df09e9ada3 Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Tue, 19 Jul 2011 14:13:33 +1000
+Subject: Don't free anything in PreInit, provide an UnInit instead.
+
+Also fixes:
+- leaking priv->buffer
+- fd closure bug
+
+Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+diff --git a/src/acecad.c b/src/acecad.c
+index a3326a0..6a0b347 100644
+--- src/acecad.c
++++ src/acecad.c
+@@ -126,7 +126,7 @@ _X_EXPORT InputDriverRec ACECAD =
+ "acecad",
+ NULL,
+ AceCadPreInit,
+- NULL,
++ AceCadUnInit,
+ NULL,
+ default_options
+ };
+@@ -462,16 +462,26 @@ AceCadPreInit(InputDriverPtr drv, InputInfoPtr local, int flags)
+ * If something went wrong, cleanup and return NULL
+ */
+ SetupProc_fail:
+- if ((local) && (local->fd))
++ return BadAlloc;
++}
++
++static void
++AceCadUnInit(InputDriverPtr drv, InputInfoPtr local, int flags)
++{
++ AceCadPrivatePtr priv = (AceCadPrivatePtr) (local->private);
++
++ if (local->fd > -1)
++ {
+ xf86CloseSerial (local->fd);
+- if ((priv) && (priv->buffer))
+- XisbFree (priv->buffer);
++ local->fd = -1;
++ }
++
+ if (priv) {
++ if (priv->buffer)
++ XisbFree (priv->buffer);
+ free (priv);
+- if (local)
+- local->private = NULL;
++ local->private = NULL;
+ }
+- return BadAlloc;
+ }
+
+ static Bool
+diff --git a/src/acecad.h b/src/acecad.h
+index b9291c7..48fa38a 100644
+--- src/acecad.h
++++ src/acecad.h
+@@ -106,6 +106,7 @@ static Bool QueryHardware (AceCadPrivatePtr);
+ static void NewPacket (AceCadPrivatePtr priv);
+ static Bool AceCadGetPacket (AceCadPrivatePtr);
+ static int AceCadPreInit(InputDriverPtr, InputInfoPtr , int);
++static void AceCadUnInit(InputDriverPtr, InputInfoPtr , int);
+ #ifdef HAVE_LINUX_INPUT_H
+ static void USBReadInput (InputInfoPtr);
+ static Bool USBQueryHardware (InputInfoPtr);
+--
+cgit v0.10.2
+
diff --git a/x11-drivers/xf86-input-acecad/files/patch-src_acecad.c b/x11-drivers/xf86-input-acecad/files/patch-src_acecad.c
new file mode 100644
index 000000000000..4c51f48b8b42
--- /dev/null
+++ b/x11-drivers/xf86-input-acecad/files/patch-src_acecad.c
@@ -0,0 +1,31 @@
+# Finish converting RemoveEnabledDevice to xf86RemoveEnabledDevice
+#
+--- src/acecad.c.orig 2016-11-24 00:26:03 UTC
++++ src/acecad.c
+@@ -491,7 +491,7 @@ AceCadPreInit(InputDriverPtr drv, InputI
+
+ if (local->fd != -1)
+ {
+- RemoveEnabledDevice (local->fd);
++ xf86RemoveEnabledDevice (local);
+ if (priv->buffer)
+ {
+ XisbFree(priv->buffer);
+@@ -499,7 +499,7 @@ AceCadPreInit(InputDriverPtr drv, InputI
+ }
+ xf86CloseSerial(local->fd);
+ }
+- RemoveEnabledDevice (local->fd);
++ xf86RemoveEnabledDevice (local);
+ local->fd = -1;
+ return Success;
+
+@@ -601,7 +601,7 @@ DeviceOff (DeviceIntPtr dev)
+
+ if (local->fd != -1)
+ {
+- RemoveEnabledDevice (local->fd);
++ xf86RemoveEnabledDevice (local);
+ if (priv->buffer)
+ {
+ XisbFree(priv->buffer);