mirror of
https://github.com/pentoo/pentoo-overlay
synced 2025-12-23 08:47:48 +01:00
218 lines
5.4 KiB
Diff
218 lines
5.4 KiB
Diff
--- src/tslib.c.orig 2011-05-31 02:29:49.000000000 +0200
|
|
+++ src/tslib.c 2011-05-31 03:35:18.000000000 +0200
|
|
@@ -106,7 +106,11 @@
|
|
}
|
|
|
|
static Bool
|
|
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
|
|
+ConvertProc( InputInfoPtr local,
|
|
+#else
|
|
ConvertProc( LocalDevicePtr local,
|
|
+#endif
|
|
int first,
|
|
int num,
|
|
int v0,
|
|
@@ -135,7 +139,11 @@
|
|
return t;
|
|
}
|
|
|
|
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
|
|
+static void ReadInput (InputInfoPtr local)
|
|
+#else
|
|
static void ReadInput (LocalDevicePtr local)
|
|
+#endif
|
|
{
|
|
struct ts_priv *priv = (struct ts_priv *) (local->private);
|
|
struct ts_sample samp;
|
|
@@ -382,7 +390,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 +404,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");
|
|
@@ -439,53 +455,96 @@
|
|
xf86DeleteInput(pInfo, 0);
|
|
}
|
|
|
|
+
|
|
+/*
|
|
+ * xf86TslibPreInit --
|
|
+ *
|
|
+ * replacement for xf86TslibInit.
|
|
+ */
|
|
+static int
|
|
+xf86TslibPreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags);
|
|
+
|
|
/*
|
|
* xf86TslibInit --
|
|
*
|
|
* called when the module subsection is found in XF86Config
|
|
*/
|
|
-static InputInfoPtr
|
|
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
|
|
+static IinputInfoPtr
|
|
xf86TslibInit(InputDriverPtr drv, IDevPtr dev, int flags)
|
|
{
|
|
- struct ts_priv *priv;
|
|
- char *s;
|
|
InputInfoPtr pInfo;
|
|
|
|
- priv = xcalloc (1, sizeof (struct ts_priv));
|
|
- if (!priv)
|
|
- return NULL;
|
|
-
|
|
- if (!(pInfo = xf86AllocateInput(drv, 0))) {
|
|
- xfree(priv);
|
|
+ if (!(pInfo = xf86AllocateInput(drv, 0)))
|
|
return NULL;
|
|
- }
|
|
|
|
/* 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;
|
|
+ pInfo->close_proc = NULL;
|
|
+ pInfo->conversion_proc = ConvertProc;
|
|
+ pInfo->reverse_conversion_proc = NULL;
|
|
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0
|
|
pInfo->motion_history_proc = xf86GetMotionEvents;
|
|
pInfo->history_size = 0;
|
|
#endif
|
|
- pInfo->control_proc = NULL;
|
|
- 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;
|
|
- pInfo->private = priv;
|
|
+ /* FIXME: Is initialization to 0 needed? */
|
|
+ pInfo->control_proc = NULL;
|
|
+ pInfo->switch_mode = NULL;
|
|
+ pInfo->dev = NULL;
|
|
|
|
/* Collect the options, and process the common options. */
|
|
xf86CollectInputOptions(pInfo, NULL, NULL);
|
|
xf86ProcessCommonOptions(pInfo, pInfo->options);
|
|
+
|
|
+ /*
|
|
+ * FIXME: is true dev->commonOptions == pInfo->options ?
|
|
+ * if not similar rutine below in xf86TslibPreInit will fail!
|
|
+ * In case of failre is necesary do some hacking. ...
|
|
+ s = xf86CheckStrOption(dev->commonOptions, "path", NULL);
|
|
+ if (!s)
|
|
+ s = xf86CheckStrOption(dev->commonOptions, "Device", NULL);
|
|
+ */
|
|
+
|
|
+ if (xf86TslibPreInit(drv, pInfo, flags) == Success)
|
|
+ {
|
|
+ /* Mark the device configured */
|
|
+ pInfo->flags |= XI86_CONFIGURED;
|
|
+ /* Return the configured device */
|
|
+ return (pInfo);
|
|
+ }
|
|
+
|
|
+ xf86DeleteInput(pInfo, 0);
|
|
+ return NULL;
|
|
+}
|
|
+#else
|
|
+static int
|
|
+xf86TslibInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
|
|
+{
|
|
+ return xf86TslibPreInit(drv, pInfo, flags);
|
|
+}
|
|
+#endif
|
|
+
|
|
+static int
|
|
+xf86TslibPreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
|
|
+{
|
|
+ int rc = BadAlloc;
|
|
+ char *s;
|
|
+ struct ts_priv *priv;
|
|
+
|
|
+ priv = calloc (1, sizeof (struct ts_priv));
|
|
+ if (!priv)
|
|
+ goto error;
|
|
+
|
|
+ pInfo->type_name = XI_TOUCHSCREEN;
|
|
+ pInfo->device_control = xf86TslibControlProc;
|
|
+ pInfo->read_input = ReadInput;
|
|
+ pInfo->private = priv;
|
|
|
|
priv->screen_num = xf86SetIntOption(pInfo->options, "ScreenNumber", 0 );
|
|
|
|
@@ -510,23 +569,22 @@
|
|
priv->rotate = TSLIB_ROTATE_NONE;
|
|
}
|
|
|
|
- s = xf86CheckStrOption(dev->commonOptions, "path", NULL);
|
|
+ s = xf86CheckStrOption(pInfo->options, "path", NULL);
|
|
if (!s)
|
|
- s = xf86CheckStrOption(dev->commonOptions, "Device", NULL);
|
|
+ s = xf86CheckStrOption(pInfo->options, "Device", NULL);
|
|
|
|
priv->ts = ts_open(s, 1);
|
|
- xfree(s);
|
|
+ free(s);
|
|
|
|
+ rc = BadMatch;
|
|
if (!priv->ts) {
|
|
ErrorF("ts_open failed (device=%s)\n",s);
|
|
- xf86DeleteInput(pInfo, 0);
|
|
- return NULL;
|
|
+ goto error;
|
|
}
|
|
|
|
if (ts_config(priv->ts)) {
|
|
ErrorF("ts_config failed\n");
|
|
- xf86DeleteInput(pInfo, 0);
|
|
- return NULL;
|
|
+ goto error;
|
|
}
|
|
|
|
pInfo->fd = ts_fd(priv->ts);
|
|
@@ -536,11 +594,14 @@
|
|
priv->state = BUTTON_EMULATION_OFF;
|
|
}
|
|
|
|
- /* Mark the device configured */
|
|
- pInfo->flags |= XI86_CONFIGURED;
|
|
+ return Success;
|
|
+
|
|
+error:
|
|
+ if (pInfo->private)
|
|
+ free(pInfo->private);
|
|
+ pInfo->private = NULL;
|
|
|
|
- /* Return the configured device */
|
|
- return (pInfo);
|
|
+ return rc;
|
|
}
|
|
|
|
_X_EXPORT InputDriverRec TSLIB_DRIVER = {
|