xdriver_xf86-input-tslib: fixed build against new x11 version
authorJesper Baekdahl <jbb@gamblify.com>
Wed, 20 Mar 2013 13:27:29 +0000 (14:27 +0100)
committerJesper Baekdahl <jbb@gamblify.com>
Wed, 20 Mar 2013 14:11:03 +0000 (15:11 +0100)
package/x11r7/xdriver_xf86-input-tslib/xdriver_xf86-input-tslib-0001-fix-segfault.patch [new file with mode: 0644]
package/x11r7/xdriver_xf86-input-tslib/xdriver_xf86-input-tslib-0002-port-abi-12.patch [new file with mode: 0644]

diff --git a/package/x11r7/xdriver_xf86-input-tslib/xdriver_xf86-input-tslib-0001-fix-segfault.patch b/package/x11r7/xdriver_xf86-input-tslib/xdriver_xf86-input-tslib-0001-fix-segfault.patch
new file mode 100644 (file)
index 0000000..adef18b
--- /dev/null
@@ -0,0 +1,34 @@
+Fetch from: https://launchpad.net/ubuntu/+archive/primary/+files/xf86-input-tslib_0.0.6-7build3.debian.tar.gz
+
+Signed-off-by: Jesper Baekdahl <jbb@gamblify.com>
+---
+--- xf86-input-tslib-0.0.6/src/tslib.c 2009-10-19 18:07:18.000000000 +0300
++++ xf86-input-tslib-0.0.6.new/src/tslib.c     2010-02-12 16:15:05.000000000 +0200
+@@ -103,8 +103,6 @@
+ static void
+ PointerControlProc(DeviceIntPtr dev, PtrCtrl * ctrl)
+ {
+-      ErrorF("%s\n", __FUNCTION__);
+-      return;
+ }
+ static Bool
+@@ -406,7 +404,9 @@
+               xf86MotionHistoryAllocate(pInfo);
+ #endif
+-              break;
++              if (!InitPtrFeedbackClassDeviceStruct(device, PointerControlProc))
++                      return !Success;
++              break;
+       case DEVICE_ON:
+               AddEnabledDevice(pInfo->fd);
+@@ -435,6 +435,7 @@
+       xf86TslibControlProc(pInfo->dev, DEVICE_OFF);
+       ts_close(priv->ts);
+       xfree(pInfo->private);
++      pInfo->private = NULL;
+       xf86DeleteInput(pInfo, 0);
+ }
diff --git a/package/x11r7/xdriver_xf86-input-tslib/xdriver_xf86-input-tslib-0002-port-abi-12.patch b/package/x11r7/xdriver_xf86-input-tslib/xdriver_xf86-input-tslib-0002-port-abi-12.patch
new file mode 100644 (file)
index 0000000..eb8fb54
--- /dev/null
@@ -0,0 +1,196 @@
+Fetch from: https://launchpad.net/ubuntu/+archive/primary/+files/xf86-input-tslib_0.0.6-7build3.debian.tar.gz
+Fixes build against newer versions of xorg.
+
+Signed-off-by: Jesper Baekdahl <jbb@gamblify.com>
+---
+Index: xf86-input-tslib-trunk/src/tslib.c
+===================================================================
+--- xf86-input-tslib-trunk/src/tslib.c (revision 48)
++++ xf86-input-tslib-trunk/src/tslib.c (working copy)
+@@ -69,6 +69,13 @@
+ #define DEFAULT_HEIGHT                240
+ #define DEFAULT_WIDTH         320
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
++#define COLLECT_INPUT_OPTIONS(pInfo, options) xf86CollectInputOptions((pInfo), (options), NULL)
++#else
++#define COLLECT_INPUT_OPTIONS(pInfo, options) xf86CollectInputOptions((pInfo), (options))
++#endif
++
++
+ enum { TSLIB_ROTATE_NONE=0, TSLIB_ROTATE_CW=270, TSLIB_ROTATE_UD=180, TSLIB_ROTATE_CCW=90 };
+ enum button_state { BUTTON_NOT_PRESSED = 0, BUTTON_1_PRESSED = 1, BUTTON_3_CLICK = 3, BUTTON_3_CLICKED=4, BUTTON_EMULATION_OFF=-1 };
+@@ -106,7 +113,7 @@
+ }
+ static Bool
+-ConvertProc( LocalDevicePtr local,
++ConvertProc( InputInfoPtr local,
+                        int first,
+                        int num,
+                        int v0,
+@@ -135,7 +142,7 @@
+     return t;
+ }
+-static void ReadInput (LocalDevicePtr local)
++static void ReadInput (InputInfoPtr local)
+ {
+       struct ts_priv *priv = (struct ts_priv *) (local->private);
+       struct ts_sample samp;
+@@ -382,7 +389,11 @@
+                                              axiswidth - 1,   /* max val */
+                                              axiswidth,       /* resolution */
+                                              0,               /* min_res */
+-                                             axiswidth);      /* max_res */
++                                             axiswidth        /* max_res */
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
++                                             ,Absolute
++#endif
++                                             );
+               InitValuatorAxisStruct(device, 1,
+ #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
+@@ -392,7 +403,11 @@
+                                              axisheight - 1,  /* max val */
+                                              axisheight,      /* resolution */
+                                              0,               /* min_res */
+-                                             axisheight);     /* max_res */
++                                             axisheight       /* max_res */
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
++                                             ,Absolute
++#endif
++                                             );
+               if (InitProximityClassDeviceStruct (device) == FALSE) {
+                       ErrorF ("Unable to allocate EVTouch touchscreen ProximityClassDeviceStruct\n");
+@@ -434,7 +449,7 @@
+       ErrorF("%s\n", __FUNCTION__);
+       xf86TslibControlProc(pInfo->dev, DEVICE_OFF);
+       ts_close(priv->ts);
+-      xfree(pInfo->private);
++      free(pInfo->private);
+       pInfo->private = NULL;
+       xf86DeleteInput(pInfo, 0);
+ }
+@@ -444,47 +459,57 @@
+  *
+  * called when the module subsection is found in XF86Config
+  */
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
++static int 
++xf86TslibInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
++#else
+ static InputInfoPtr
+ xf86TslibInit(InputDriverPtr drv, IDevPtr dev, int flags)
++#endif
+ {
+       struct ts_priv *priv;
+       char *s;
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
+       InputInfoPtr pInfo;
++#endif
+-      priv = xcalloc (1, sizeof (struct ts_priv));
++      priv = calloc (1, sizeof (struct ts_priv));
+         if (!priv)
+-                return NULL;
++                return BadValue;
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
+       if (!(pInfo = xf86AllocateInput(drv, 0))) {
+-              xfree(priv);
+-              return NULL;
++              free(priv);
++              return BadValue;
+       }
+       /* Initialise the InputInfoRec. */
+       pInfo->name = dev->identifier;
+-      pInfo->type_name = XI_TOUCHSCREEN;
+       pInfo->flags =
+           XI86_KEYBOARD_CAPABLE | XI86_POINTER_CAPABLE |
+           XI86_SEND_DRAG_EVENTS;
+-      pInfo->device_control = xf86TslibControlProc;
+-      pInfo->read_input = ReadInput;
+ #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0
+       pInfo->motion_history_proc = xf86GetMotionEvents;
+       pInfo->history_size = 0;
+ #endif
+-      pInfo->control_proc = NULL;
++      pInfo->conf_idev = dev;
+       pInfo->close_proc = NULL;
+-      pInfo->switch_mode = NULL;
+       pInfo->conversion_proc = ConvertProc;
+       pInfo->reverse_conversion_proc = NULL;
+-      pInfo->dev = NULL;
+       pInfo->private_flags = 0;
+       pInfo->always_core_feedback = 0;
+-      pInfo->conf_idev = dev;
++#endif
++
++      pInfo->type_name = XI_TOUCHSCREEN;
++      pInfo->control_proc = NULL;
++      pInfo->read_input = ReadInput;
++      pInfo->device_control = xf86TslibControlProc;
++      pInfo->switch_mode = NULL;
+       pInfo->private = priv;
++      pInfo->dev = NULL;
+       /* Collect the options, and process the common options. */
+-      xf86CollectInputOptions(pInfo, NULL, NULL);
++      COLLECT_INPUT_OPTIONS(pInfo, NULL);
+       xf86ProcessCommonOptions(pInfo, pInfo->options);
+       priv->screen_num = xf86SetIntOption(pInfo->options, "ScreenNumber", 0 );
+@@ -510,23 +535,31 @@
+               priv->rotate = TSLIB_ROTATE_NONE;
+       }
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
+       s = xf86CheckStrOption(dev->commonOptions, "path", NULL);
++#else
++      s = xf86CheckStrOption(pInfo->options, "path", NULL);
++#endif
+       if (!s)
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
+               s = xf86CheckStrOption(dev->commonOptions, "Device", NULL);
++#else
++              s = xf86CheckStrOption(pInfo->options, "Device", NULL);
++#endif
+  
+       priv->ts = ts_open(s, 1);
+-      xfree(s);
++      free(s);
+       if (!priv->ts) {
+               ErrorF("ts_open failed (device=%s)\n",s);
+               xf86DeleteInput(pInfo, 0);
+-              return NULL;
++              return BadValue;
+       }
+       if (ts_config(priv->ts)) {
+               ErrorF("ts_config failed\n");
+               xf86DeleteInput(pInfo, 0);
+-              return NULL;
++              return BadValue;
+       }
+       pInfo->fd = ts_fd(priv->ts);
+@@ -536,11 +569,13 @@
+               priv->state = BUTTON_EMULATION_OFF;
+       }
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
+       /* Mark the device configured */
+       pInfo->flags |= XI86_CONFIGURED;
++#endif
+       /* Return the configured device */
+-      return (pInfo);
++      return Success;
+ }
+ _X_EXPORT InputDriverRec TSLIB = {