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:
Adrian Bunk 2019-10-30 12:52:49 +02:00 committed by Khem Raj
parent ad2e934a7a
commit e83d44b5b4
7 changed files with 20 additions and 327 deletions

View File

@ -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>

View File

@ -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);
}

View File

@ -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 };

View File

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

View File

@ -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:

View File

@ -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"

View File

@ -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"