mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-06-04 14:39:54 +00:00
xf86-input-tslib: Upgrade 0.0.6 -> 0.0.7
New upstream location. Patches applied upstream removed. Remove obsolete HAL file. COPYING is now clearer on the licensing. Signed-off-by: Adrian Bunk <bunk@stusta.de> Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
@@ -1,11 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<deviceinfo version="0.2">
|
|
||||||
<device>
|
|
||||||
<match key="info.capabilities" contains="input.touchpad">
|
|
||||||
<merge key="input.x11_driver" type="string">tslib</merge>
|
|
||||||
</match>
|
|
||||||
<match key="info.capabilities" contains="input.touchscreen">
|
|
||||||
<merge key="input.x11_driver" type="string">tslib</merge>
|
|
||||||
</match>
|
|
||||||
</device>
|
|
||||||
</deviceinfo>
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
xorg-server-1.7.3/hw/xfree86/common/xf86Helper.c contains this code
|
|
||||||
causing a double free crash on chvt or exit:
|
|
||||||
|
|
||||||
/* This should *really* be handled in drv->UnInit(dev) call instead, but
|
|
||||||
* if the driver forgets about it make sure we free it or at least crash
|
|
||||||
* with flying colors */
|
|
||||||
if (pInp->private)
|
|
||||||
xfree(pInp->private);
|
|
||||||
Index: xf86-input-tslib-0.0.6/src/tslib.c
|
|
||||||
===================================================================
|
|
||||||
--- xf86-input-tslib-0.0.6.orig/src/tslib.c
|
|
||||||
+++ xf86-input-tslib-0.0.6/src/tslib.c
|
|
||||||
@@ -435,6 +435,7 @@ xf86TslibUninit(InputDriverPtr drv, Inpu
|
|
||||||
xf86TslibControlProc(pInfo->dev, DEVICE_OFF);
|
|
||||||
ts_close(priv->ts);
|
|
||||||
xfree(pInfo->private);
|
|
||||||
+ pInfo->private = NULL;
|
|
||||||
xf86DeleteInput(pInfo, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
-31
@@ -1,31 +0,0 @@
|
|||||||
Fixes crash when a touchscreen event is received with xserver 1.12 and later:
|
|
||||||
X: symbol lookup error: /usr/lib/xorg/modules/input/tslib_drv.so: undefined symbol: xf86XInputSetScreen
|
|
||||||
|
|
||||||
Upstream-Status: Pending
|
|
||||||
|
|
||||||
Taken from Gentoo:
|
|
||||||
https://bugs.gentoo.org/show_bug.cgi?id=446432
|
|
||||||
|
|
||||||
diff -ur xf86-input-tslib-0.0.6.orig/src/tslib.c xf86-input-tslib-0.0.6/src/tslib.c
|
|
||||||
--- xf86-input-tslib-0.0.6.orig/src/tslib.c 2012-12-05 01:12:16.286597071 +0100
|
|
||||||
+++ xf86-input-tslib-0.0.6/src/tslib.c 2012-12-05 01:11:02.686598595 +0100
|
|
||||||
@@ -75,6 +75,19 @@
|
|
||||||
#define COLLECT_INPUT_OPTIONS(pInfo, options) xf86CollectInputOptions((pInfo), (options))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) > 13
|
|
||||||
+static void
|
|
||||||
+xf86XInputSetScreen(InputInfoPtr pInfo,
|
|
||||||
+ int screen_number,
|
|
||||||
+ int x,
|
|
||||||
+ int y)
|
|
||||||
+{
|
|
||||||
+ if (miPointerGetScreen(pInfo->dev) !=
|
|
||||||
+ screenInfo.screens[screen_number]) {
|
|
||||||
+ miPointerSetScreen(pInfo->dev, screen_number, x, y);
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
enum { TSLIB_ROTATE_NONE=0, TSLIB_ROTATE_CW=270, TSLIB_ROTATE_UD=180, TSLIB_ROTATE_CCW=90 };
|
|
||||||
|
|
||||||
-196
@@ -1,196 +0,0 @@
|
|||||||
Upstream-Status: Pending
|
|
||||||
|
|
||||||
Taken from debian:
|
|
||||||
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=627075
|
|
||||||
|
|
||||||
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 = {
|
|
||||||
-34
@@ -1,34 +0,0 @@
|
|||||||
From Grazvydas Ignotas
|
|
||||||
|
|
||||||
At least xserver 1.7.4 crashes on XGetPointerControl request because of xf86-input-tslib:
|
|
||||||
|
|
||||||
Program received signal SIGSEGV, Segmentation fault.
|
|
||||||
#0 0x000355e0 in ProcGetPointerControl (client=0x4a2e58) at devices.c:2122
|
|
||||||
#1 0x00062fa8 in Dispatch () at dispatch.c:439
|
|
||||||
#2 0x00022444 in main (argc=4, argv=0xbeebedc4, envp=0xbeebedd8) at main.c:285
|
|
||||||
|
|
||||||
This happens because ptrfeed field is not set in device structure from tslib.
|
|
||||||
To fix this, call InitPtrFeedbackClassDeviceStruct() during DEVICE_INIT to get necessary setup done (as done in other input drivers).
|
|
||||||
|
|
||||||
---
|
|
||||||
diff -ur xf86-input-tslib-0.0.6/src/tslib.c xf86-input-tslib-0.0.6_/src/tslib.c
|
|
||||||
--- xf86-input-tslib-0.0.6/src/tslib.c 2010-02-09 12:23:22.000000000 +0200
|
|
||||||
+++ xf86-input-tslib-0.0.6_/src/tslib.c 2010-02-09 12:37:33.000000000 +0200
|
|
||||||
@@ -103,8 +103,6 @@
|
|
||||||
static void
|
|
||||||
PointerControlProc(DeviceIntPtr dev, PtrCtrl * ctrl)
|
|
||||||
{
|
|
||||||
- ErrorF("%s\n", __FUNCTION__);
|
|
||||||
- return;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Bool
|
|
||||||
@@ -406,6 +404,8 @@
|
|
||||||
xf86MotionHistoryAllocate(pInfo);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+ if (!InitPtrFeedbackClassDeviceStruct(device, PointerControlProc))
|
|
||||||
+ return !Success;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DEVICE_ON:
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
require recipes-graphics/xorg-driver/xorg-driver-input.inc
|
|
||||||
SUMMARY = "X.Org X server -- tslib input driver"
|
|
||||||
DEPENDS += "tslib"
|
|
||||||
RRECOMMENDS_${PN} += "tslib-calibrate"
|
|
||||||
RSUGGESTS_${PN} += "hal"
|
|
||||||
|
|
||||||
# derived from xf86-input-void, that's why I kept MIT-X, but it's not clear, see COPYING
|
|
||||||
LIC_FILES_CHKSUM = "file://src/tslib.c;endline=28;md5=bd62eaef222dcf5cd59e490a12bd795e \
|
|
||||||
file://COPYING;md5=4641deddaa80fe7ca88e944e1fd94a94"
|
|
||||||
|
|
||||||
PR = "${INC_PR}.1"
|
|
||||||
|
|
||||||
SRC_URI = "http://www.pengutronix.de/software/xf86-input-tslib/download/xf86-input-tslib-${PV}.tar.bz2 \
|
|
||||||
file://double-free-crash.patch \
|
|
||||||
file://10-x11-input-tslib.fdi \
|
|
||||||
file://xserver-174-XGetPointerControl.patch \
|
|
||||||
file://99-xf86-input-tslib.rules \
|
|
||||||
file://xf86-input-tslib-port-ABI-12-r48.patch \
|
|
||||||
file://xf86-input-tslib-0.0.6-xf86XInputSetScreen.patch \
|
|
||||||
"
|
|
||||||
|
|
||||||
SRC_URI[md5sum] = "b7a4d2f11637ee3fcf432e044b1d017f"
|
|
||||||
SRC_URI[sha256sum] = "5f46fdef095a6e44a69e0f0b57c7d665224b26d990d006611236d8332e85b105"
|
|
||||||
|
|
||||||
do_configure_prepend() {
|
|
||||||
rm -rf ${S}/m4/ || true
|
|
||||||
}
|
|
||||||
do_install_append() {
|
|
||||||
install -d ${D}/${datadir}/hal/fdi/policy/20thirdparty
|
|
||||||
install -m 0644 ${WORKDIR}/10-x11-input-tslib.fdi ${D}/${datadir}/hal/fdi/policy/20thirdparty
|
|
||||||
install -d ${D}${nonarch_base_libdir}/udev/rules.d
|
|
||||||
install -m 0644 ${WORKDIR}/99-xf86-input-tslib.rules ${D}${nonarch_base_libdir}/udev/rules.d/
|
|
||||||
}
|
|
||||||
|
|
||||||
FILES_${PN} += "${datadir}/hal ${nonarch_base_libdir}/udev"
|
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
require recipes-graphics/xorg-driver/xorg-driver-input.inc
|
||||||
|
SUMMARY = "X.Org X server -- tslib input driver"
|
||||||
|
DEPENDS += "tslib"
|
||||||
|
RRECOMMENDS_${PN} += "tslib-calibrate"
|
||||||
|
|
||||||
|
LIC_FILES_CHKSUM = "file://COPYING;md5=f1524518264f7776a9707c19c8affbbf"
|
||||||
|
|
||||||
|
SRC_URI = "https://github.com/merge/xf86-input-tslib/releases/download/${PV}/xf86-input-tslib-${PV}.tar.xz \
|
||||||
|
file://99-xf86-input-tslib.rules \
|
||||||
|
"
|
||||||
|
|
||||||
|
SRC_URI[md5sum] = "c5ffb03bccccfa1c4ba11079fef0036e"
|
||||||
|
SRC_URI[sha256sum] = "1439a9efa50eb481e6a0ab5319ab0765d457732e7da64e3c15f3c0cd13b44297"
|
||||||
|
|
||||||
|
do_install_append() {
|
||||||
|
install -d ${D}${nonarch_base_libdir}/udev/rules.d
|
||||||
|
install -m 0644 ${WORKDIR}/99-xf86-input-tslib.rules ${D}${nonarch_base_libdir}/udev/rules.d/
|
||||||
|
}
|
||||||
|
|
||||||
|
FILES_${PN} += "${nonarch_base_libdir}/udev"
|
||||||
Reference in New Issue
Block a user