| 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 = { |