xserver-xorg-input-joystick: Changes to 'debian-unstable'
ChangeLog | 61 ++++++++++++++++++++++++++++++++++++
configure.ac | 2 -
debian/changelog | 8 ++++
debian/patches/series | 1
debian/patches/support-new-api.diff | 58 ----------------------------------
debian/upstream/signing-key.asc | 23 +++++++++++++
debian/watch | 1
src/backend_bsd.c | 33 ++++++++-----------
src/backend_evdev.c | 40 ++++++++++-------------
src/backend_joystick.c | 44 ++++++-------------------
src/jstk.c | 47 +++++++++++++++++++++++----
src/jstk.h | 6 +++
src/jstk_key.c | 3 +
13 files changed, 184 insertions(+), 143 deletions(-)
New commits:
commit 082690d87aa872a7c03e9b73469334f5c255f30c
Author: Andreas Boll <andreas.boll.dev@gmail.com>
Date: Fri Nov 18 11:14:54 2016 +0100
Let uscan verify tarball signatures.
diff --git a/debian/changelog b/debian/changelog
index c178059..c86406c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -2,6 +2,7 @@ xserver-xorg-input-joystick (1:1.6.3-1) UNRELEASED; urgency=medium
* New upstream release.
* Drop support-new-api.diff, upstream in 1.6.3.
+ * Let uscan verify tarball signatures.
-- Andreas Boll <andreas.boll.dev@gmail.com> Fri, 18 Nov 2016 11:05:47 +0100
diff --git a/debian/upstream/signing-key.asc b/debian/upstream/signing-key.asc
new file mode 100644
index 0000000..767d86a
--- /dev/null
+++ b/debian/upstream/signing-key.asc
@@ -0,0 +1,23 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQGiBD8b0wYRBACph9kRJmP+4+JGsCgFlFoy4vFO0DCG+jmkQN0n1wdInt/N/UtA
+sZToO72AUmfmYizA+IEbzBrx0UnUo3w3BDmHxUWf/akZiPUz9AA/YFY4xC3MY2OK
+VN2Jz6YSce4zJ5jd2ZRobHm4HuIf/8yqSCcsv7FNfrLaTNIFRs5gYYsqZwCgwmkp
+RSLRc8WAnHrTWNQDaEFM2rUEAKTjrTjMN8+KGd0BxNX7HiTSqQP++nXNwAYs1oWB
+Yt82YHj9SvRCqCzD1pzJQivYnlNoWDza1VeMnfdAvkdia8z4lYbO/RunXZJvra3Z
+VDm+izq+uwUAyvFuEYnNz09VSqwXKT6+XW0Xtz2vHq52r6DS6mK8cGJHZ5OhrRjq
+UEYxA/9STh+QfA98xtNoRcf52E/46r7IpCj440oRVc9lMfxQZrLGQNqp7sPdIhGQ
+CCo2NUII5hkhdAG71kpbfSXU4Sh32p1cU1KYCAkDFfb49bKuAs+Pff8v6FGZxTdd
+AinPZr4BbsYJatk818aTCnu0+s7L8jL5GPfeyuyEMKwzVBx2mLQpUGV0ZXIgSHV0
+dGVyZXIgKFdoby1UKSA8b2ZmaWNlQHdoby10Lm5ldD6IWQQTEQIAGQUCPxvTBgQL
+BwMCAxUCAwMWAgECHgECF4AACgkQ4jt+cLRn8L/0RACfWo3KTMUg+uPRqA6RXxk0
+4CWjXaMAoJeIxOpZLB3RBltPnSi7PyVQIkHFuQENBD8b0wgQBACTnqOYOWYVR8O1
+D73J6nbdAeZCbXrUkyXIuyqBOdKmX/0QJmSs7Wfsa+hPfDhj6ai0Gs2C8Qg/0Pzk
+86b4p9DLkf0M6RaYjUtCJBpS59xrsV6nz6xZzQa4RRdf1YJmw2tia1MMXzxbwQU2
+bKpYEm8NsGaBURMGd02EvsMN2wI2uwADBQP/e9MjVr/85XDzAlUBN8HwYW5szTyP
+8ZVcQOqOmNebkTWGLvkPrBdXmxpzrWjxPolO1WcWQjUL0bN/rbdqefT65iVHJHJZ
+/cpTtgGlCPhL5JTA50ltd0I13CABYWLFmswonXES/6tcglf4rr3Nri2sOrY5HggP
+ipEzOo5vdKOow/qIRgQYEQIABgUCPxvTCAAKCRDiO35wtGfwv68jAKCDvL2gkrg1
+4NfV7rNc057K1nL2GgCeKApWRgGVzaOkAp0P5tQulaDD6zM=
+=7uBX
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/debian/watch b/debian/watch
index 4ecc980..bd68fbd 100644
--- a/debian/watch
+++ b/debian/watch
@@ -1,3 +1,4 @@
#git=git://anongit.freedesktop.org/xorg/driver/xf86-input-joystick
version=3
+opts="pgpsigurlmangle=s/$/.sig/" \
https://xorg.freedesktop.org/releases/individual/driver/ xf86-input-joystick-(.*)\.tar\.gz
commit f8402d7500f28585b96887c99b8ec6a222e1b72f
Author: Andreas Boll <andreas.boll.dev@gmail.com>
Date: Fri Nov 18 11:11:53 2016 +0100
Drop support-new-api.diff, upstream in 1.6.3.
diff --git a/debian/changelog b/debian/changelog
index 8dc43ea..c178059 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,7 @@
xserver-xorg-input-joystick (1:1.6.3-1) UNRELEASED; urgency=medium
* New upstream release.
+ * Drop support-new-api.diff, upstream in 1.6.3.
-- Andreas Boll <andreas.boll.dev@gmail.com> Fri, 18 Nov 2016 11:05:47 +0100
diff --git a/debian/patches/series b/debian/patches/series
index 258f787..f047877 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1 @@
0001-Fix-includes-for-kfreebsd.diff
-support-new-api.diff
diff --git a/debian/patches/support-new-api.diff b/debian/patches/support-new-api.diff
deleted file mode 100644
index 1b2356c..0000000
--- a/debian/patches/support-new-api.diff
+++ /dev/null
@@ -1,58 +0,0 @@
---- a/src/jstk.c
-+++ b/src/jstk.c
-@@ -61,6 +61,10 @@
- char debug_level = 0;
- #endif
-
-+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 23
-+#define HAVE_THREADED_INPUT 1
-+#endif
-+
- /*
- ***************************************************************************
- *
-@@ -124,8 +128,13 @@ jstkReadProc(InputInfoPtr pInfo)
- ((r=priv->read_proc(priv, &event, &number))==0)) {
- xf86Msg(X_WARNING, "JOYSTICK: Read failed. Deactivating device.\n");
-
-- if (pInfo->fd >= 0)
-- RemoveEnabledDevice(pInfo->fd);
-+ if (pInfo->fd >= 0) {
-+#if HAVE_THREADED_INPUT
-+ xf86RemoveEnabledDevice(pInfo);
-+#else
-+ RemoveEnabledDevice(pInfo->fd);
-+#endif
-+ }
- return;
- }
-
-@@ -392,7 +401,11 @@ jstkDeviceControlProc(DeviceIntPtr
- if (jstkOpenDevice(priv, FALSE) != -1) {
- pJstk->public.on = TRUE;
- pInfo->fd = priv->fd;
-- AddEnabledDevice(pInfo->fd);
-+#if HAVE_THREADED_INPUT
-+ xf86AddEnabledDevice(pInfo);
-+#else
-+ AddEnabledDevice(pInfo->fd);
-+#endif
- } else return !Success;
- break;
-
-@@ -414,8 +427,13 @@ jstkDeviceControlProc(DeviceIntPtr
- TimerCancel(priv->axis[i].timer);
- }
-
-- if (pInfo->fd >= 0)
-- RemoveEnabledDevice(pInfo->fd);
-+ if (pInfo->fd >= 0) {
-+#if HAVE_THREADED_INPUT
-+ xf86RemoveEnabledDevice(pInfo);
-+#else
-+ RemoveEnabledDevice(pInfo->fd);
-+#endif
-+ }
- pInfo->fd = -1;
- if (priv->close_proc)
- priv->close_proc(priv);
commit 3f2379d607c5819ae49b5829b96fb948ef5afae1
Author: Andreas Boll <andreas.boll.dev@gmail.com>
Date: Fri Nov 18 11:06:12 2016 +0100
Bump changelogs
diff --git a/ChangeLog b/ChangeLog
index 7a98074..91d70fd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,64 @@
+commit de424865ece983d8da62b7f7e3d013eabac0b8b5
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Fri Nov 18 08:58:35 2016 +1000
+
+ joystick 1.6.3
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 60d0e9c451b3f259d524b0ddcc5c1f21a4f82293
+Author: Matthieu Herrb <matthieu@herrb.eu>
+Date: Sun Jul 31 12:54:14 2016 +0200
+
+ use xf86{Add,Remove}EnabledDevice()
+
+ Signed-off-by: Matthieu Herrb <matthieu@herrb.eu>
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit baf8bd4441d5dc6cdd687e066bf13cc1c3df1a41
+Author: Hans de Goede <hdegoede@redhat.com>
+Date: Thu Mar 13 14:49:53 2014 +0100
+
+ Add support for server managed fds
+
+ Keep things simple by handling server managed fds in the common parts
+ of the open and close paths.
+
+ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 341d23ceaa9d5483b5318425e7308e09f8941957
+Author: Hans de Goede <hdegoede@redhat.com>
+Date: Thu Mar 13 14:49:52 2014 +0100
+
+ Add a generic jstkCloseDevice helper function
+
+ This is a preparation patch for adding support for server managed fds.
+
+ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit 6de3b75c453e4687b21f6d6acfcf87e7041c4fc5
+Author: Hans de Goede <hdegoede@redhat.com>
+Date: Thu Mar 13 14:49:51 2014 +0100
+
+ Use jstkCloseDevice_* on error in jstkOpenDevice_* backend functions
+
+ This is a preparation patch for adding support for server managed fds, this
+ also fixes a missing free() in an error handling path in the evdev back-end.
+
+ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
+commit a976a85aeff4f2511544c0385533d9387957afae
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Wed Jan 30 12:57:51 2013 +1000
+
+ Handle DEVICE_ABORT for input ABI 19.1
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+
commit 426c3aa3c8a2385f17e37ae73c1e78f072656027
Author: Sascha Hlusiak <saschahlusiak@arcor.de>
Date: Wed Jan 16 10:52:12 2013 +0100
diff --git a/debian/changelog b/debian/changelog
index 0f9a13d..8dc43ea 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+xserver-xorg-input-joystick (1:1.6.3-1) UNRELEASED; urgency=medium
+
+ * New upstream release.
+
+ -- Andreas Boll <andreas.boll.dev@gmail.com> Fri, 18 Nov 2016 11:05:47 +0100
+
xserver-xorg-input-joystick (1:1.6.2-2) unstable; urgency=medium
* support-new-api.diff: Fix build with xserver 1.19.
commit de424865ece983d8da62b7f7e3d013eabac0b8b5
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Fri Nov 18 08:58:35 2016 +1000
joystick 1.6.3
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/configure.ac b/configure.ac
index b5834a5..5c930ad 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
# Initialize Autoconf
AC_PREREQ([2.60])
AC_INIT([xf86-input-joystick],
- [1.6.2],
+ [1.6.3],
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
[xf86-input-joystick])
AC_CONFIG_SRCDIR([Makefile.am])
commit 60d0e9c451b3f259d524b0ddcc5c1f21a4f82293
Author: Matthieu Herrb <matthieu@herrb.eu>
Date: Sun Jul 31 12:54:14 2016 +0200
use xf86{Add,Remove}EnabledDevice()
Signed-off-by: Matthieu Herrb <matthieu@herrb.eu>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/src/jstk.c b/src/jstk.c
index 6cf0ef9..158d77a 100644
--- a/src/jstk.c
+++ b/src/jstk.c
@@ -147,7 +147,7 @@ jstkReadProc(InputInfoPtr pInfo)
xf86Msg(X_WARNING, "JOYSTICK: Read failed. Deactivating device.\n");
if (pInfo->fd >= 0)
- RemoveEnabledDevice(pInfo->fd);
+ xf86RemoveEnabledDevice(pInfo);
return;
}
@@ -414,7 +414,7 @@ jstkDeviceControlProc(DeviceIntPtr pJstk,
if (jstkOpenDevice(priv, FALSE) != -1) {
pJstk->public.on = TRUE;
pInfo->fd = priv->fd;
- AddEnabledDevice(pInfo->fd);
+ xf86AddEnabledDevice(pInfo);
} else return !Success;
break;
@@ -437,7 +437,7 @@ jstkDeviceControlProc(DeviceIntPtr pJstk,
}
if (pInfo->fd >= 0)
- RemoveEnabledDevice(pInfo->fd);
+ xf86RemoveEnabledDevice(pInfo);
if (!(pInfo->flags & XI86_SERVER_FD))
pInfo->fd = -1;
if (priv->close_proc)
@@ -772,4 +772,3 @@ _X_EXPORT XF86ModuleData joystickModuleData = {
};
/* vim: set filetype=c.doxygen ts=4 et: */
-
commit baf8bd4441d5dc6cdd687e066bf13cc1c3df1a41
Author: Hans de Goede <hdegoede@redhat.com>
Date: Thu Mar 13 14:49:53 2014 +0100
Add support for server managed fds
Keep things simple by handling server managed fds in the common parts
of the open and close paths.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/src/backend_bsd.c b/src/backend_bsd.c
index f3f501e..d8c6bac 100644
--- a/src/backend_bsd.c
+++ b/src/backend_bsd.c
@@ -91,10 +91,12 @@ jstkOpenDevice_bsd(JoystickDevPtr joystick, Bool probe)
report_desc_t rd;
struct jstk_bsd_hid_data *bsddata;
- if ((joystick->fd = open(joystick->device, O_RDWR | O_NDELAY, 0)) < 0) {
- xf86Msg(X_ERROR, "Cannot open joystick '%s' (%s)\n", joystick->device,
- strerror(errno));
- return -1;
+ if (joystick->fd == -1) {
+ if ((joystick->fd = open(joystick->device, O_RDWR | O_NDELAY, 0)) < 0) {
+ xf86Msg(X_ERROR, "Cannot open joystick '%s' (%s)\n",
+ joystick->device, strerror(errno));
+ return -1;
+ }
}
if ((rd = hid_get_report_desc(joystick->fd)) == 0) {
diff --git a/src/backend_evdev.c b/src/backend_evdev.c
index 2a7b0e2..cae4b28 100644
--- a/src/backend_evdev.c
+++ b/src/backend_evdev.c
@@ -90,10 +90,12 @@ jstkOpenDevice_evdev(JoystickDevPtr joystick, Bool probe)
unsigned long key_bits[NBITS(KEY_MAX)];
int axes, buttons, j;
- if ((joystick->fd = open(joystick->device, O_RDONLY | O_NDELAY, 0)) < 0) {
- xf86Msg(X_ERROR, "Cannot open joystick '%s' (%s)\n",
- joystick->device, strerror(errno));
- return -1;
+ if (joystick->fd == -1) {
+ if ((joystick->fd = open(joystick->device, O_RDONLY | O_NDELAY, 0)) < 0) {
+ xf86Msg(X_ERROR, "Cannot open joystick '%s' (%s)\n",
+ joystick->device, strerror(errno));
+ return -1;
+ }
}
if (ioctl(joystick->fd, EVIOCGVERSION, &driver_version) == -1) {
diff --git a/src/backend_joystick.c b/src/backend_joystick.c
index d335bc2..172ce50 100644
--- a/src/backend_joystick.c
+++ b/src/backend_joystick.c
@@ -72,10 +72,12 @@ jstkOpenDevice_joystick(JoystickDevPtr joystick, Bool probe)
unsigned char axes, buttons;
int driver_version;
- if ((joystick->fd = open(joystick->device, O_RDONLY | O_NDELAY, 0)) < 0) {
- xf86Msg(X_ERROR, "Cannot open joystick '%s' (%s)\n",
- joystick->device, strerror(errno));
- return -1;
+ if (joystick->fd == -1) {
+ if ((joystick->fd = open(joystick->device, O_RDONLY | O_NDELAY, 0)) < 0) {
+ xf86Msg(X_ERROR, "Cannot open joystick '%s' (%s)\n",
+ joystick->device, strerror(errno));
+ return -1;
+ }
}
if (ioctl(joystick->fd, JSIOCGVERSION, &driver_version) == -1) {
diff --git a/src/jstk.c b/src/jstk.c
index 211fe32..6cf0ef9 100644
--- a/src/jstk.c
+++ b/src/jstk.c
@@ -80,6 +80,9 @@ jstkOpenDevice(JoystickDevPtr priv, BOOL probe)
int fd;
fd = -1;
+ if (priv->joystick_device->flags & XI86_SERVER_FD)
+ priv->fd = priv->joystick_device->fd;
+
if (probe == FALSE && priv->open_proc)
return priv->open_proc(priv, probe);
@@ -112,7 +115,8 @@ jstkOpenDevice(JoystickDevPtr priv, BOOL probe)
void jstkCloseDevice(JoystickDevPtr priv)
{
if ((priv->fd >= 0)) {
- xf86CloseSerial(priv->fd);
+ if (!(priv->joystick_device->flags & XI86_SERVER_FD))
+ xf86CloseSerial(priv->fd);
priv->fd = -1;
}
}
@@ -434,7 +438,8 @@ jstkDeviceControlProc(DeviceIntPtr pJstk,
if (pInfo->fd >= 0)
RemoveEnabledDevice(pInfo->fd);
- pInfo->fd = -1;
+ if (!(pInfo->flags & XI86_SERVER_FD))
+ pInfo->fd = -1;
if (priv->close_proc)
priv->close_proc(priv);
pJstk->public.on = FALSE;
@@ -485,7 +490,8 @@ jstkCorePreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
pInfo->read_input = jstkReadProc;
pInfo->control_proc = NULL;
pInfo->switch_mode = NULL;
- pInfo->fd = -1;
+ if (!(pInfo->flags & XI86_SERVER_FD))
+ pInfo->fd = -1;
pInfo->dev = NULL;
pInfo->type_name = XI_JOYSTICK;
@@ -506,6 +512,7 @@ jstkCorePreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
priv->mouse_enabled = TRUE;
priv->keys_enabled = TRUE;
priv->amplify = 1.0f;
+ priv->joystick_device = pInfo;
priv->keyboard_device = keyboard_device;
priv->num_axes = MAXAXES;
priv->num_buttons = MAXBUTTONS;
@@ -682,7 +689,11 @@ _X_EXPORT InputDriverRec JOYSTICK = {
NULL,
jstkCorePreInit,
jstkCoreUnInit,
- NULL
+ NULL,
+ NULL,
+#ifdef XI86_DRV_CAP_SERVER_FD
+ XI86_DRV_CAP_SERVER_FD
+#endif
};
/*
diff --git a/src/jstk.h b/src/jstk.h
index 4955435..6421e7f 100644
--- a/src/jstk.h
+++ b/src/jstk.h
@@ -55,6 +55,9 @@
#define XI_JOYSTICK "JOYSTICK"
#endif
+#ifndef XI86_SERVER_FD
+#define XI86_SERVER_FD 0x20
+#endif
typedef enum _JOYSTICKEVENT {
EVENT_NONE=0,
@@ -106,6 +109,7 @@ typedef struct _JoystickDevRec {
jstkReadDataProc read_proc; /* Callback for reading data from the backend */
void *devicedata; /* Extra platform device dependend data */
char *device; /* Name of the device */
+ InputInfoPtr joystick_device; /* Back pointer to the joystick device */
InputInfoPtr keyboard_device; /* Slave device for keyboard events */
OsTimerPtr timer; /* Timer for axis movement */
diff --git a/src/jstk_key.c b/src/jstk_key.c
index 241b15d..5a4ed8e 100644
--- a/src/jstk_key.c
+++ b/src/jstk_key.c
@@ -200,7 +200,8 @@ int jstkKeyboardPreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
pInfo->read_input = NULL;
pInfo->control_proc = NULL;
pInfo->switch_mode = NULL;
- pInfo->fd = -1;
+ if (!(pInfo->flags & XI86_SERVER_FD))
+ pInfo->fd = -1;
pInfo->type_name = XI_JOYSTICK;
/* parse keyboard-related options */
commit 341d23ceaa9d5483b5318425e7308e09f8941957
Author: Hans de Goede <hdegoede@redhat.com>
Date: Thu Mar 13 14:49:52 2014 +0100
Add a generic jstkCloseDevice helper function
This is a preparation patch for adding support for server managed fds.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/src/backend_bsd.c b/src/backend_bsd.c
index 9fa3035..f3f501e 100644
--- a/src/backend_bsd.c
+++ b/src/backend_bsd.c
@@ -209,10 +209,7 @@ jstkOpenDevice_bsd(JoystickDevPtr joystick, Bool probe)
static void
jstkCloseDevice_bsd(JoystickDevPtr joystick)
{
- if ((joystick->fd >= 0)) {
- xf86CloseSerial(joystick->fd);
- joystick->fd = -1;
- }
+ jstkCloseDevice(joystick);
if (joystick->devicedata != NULL) {
if (((struct jstk_bsd_hid_data*)joystick->devicedata)->data_buf)
free(((struct jstk_bsd_hid_data*)joystick->devicedata)->data_buf);
diff --git a/src/backend_evdev.c b/src/backend_evdev.c
index 6d6f644..2a7b0e2 100644
--- a/src/backend_evdev.c
+++ b/src/backend_evdev.c
@@ -210,10 +210,7 @@ jstkOpenDevice_evdev(JoystickDevPtr joystick, Bool probe)
static void
jstkCloseDevice_evdev(JoystickDevPtr joystick)
{
- if ((joystick->fd >= 0)) {
- xf86CloseSerial(joystick->fd);
- joystick->fd = -1;
- }
+ jstkCloseDevice(joystick);
if (joystick->devicedata) {
free(joystick->devicedata);
joystick->devicedata = NULL;
diff --git a/src/backend_joystick.c b/src/backend_joystick.c
index c84654e..d335bc2 100644
--- a/src/backend_joystick.c
+++ b/src/backend_joystick.c
@@ -49,7 +49,6 @@
#include "backend_joystick.h"
-static void jstkCloseDevice_joystick(JoystickDevPtr joystick);
static int jstkReadData_joystick(JoystickDevPtr joystick,
JOYSTICKEVENT *event,
int *number);
@@ -82,7 +81,7 @@ jstkOpenDevice_joystick(JoystickDevPtr joystick, Bool probe)
if (ioctl(joystick->fd, JSIOCGVERSION, &driver_version) == -1) {
xf86Msg(X_ERROR, "Joystick: ioctl JSIOCGVERSION on '%s' failed: %s\n",
joystick->device, strerror(errno));
- jstkCloseDevice_joystick(joystick);
+ jstkCloseDevice(joystick);
return -1;
}
if ((driver_version >> 16) < 1) {
@@ -95,21 +94,21 @@ jstkOpenDevice_joystick(JoystickDevPtr joystick, Bool probe)
if (ioctl(joystick->fd, JSIOCGAXES, &axes) == -1) {
xf86Msg(X_ERROR, "Joystick: ioctl JSIOCGAXES on '%s' failed: %s\n",
joystick->device, strerror(errno));
- jstkCloseDevice_joystick(joystick);
+ jstkCloseDevice(joystick);
return -1;
}
if (ioctl(joystick->fd, JSIOCGBUTTONS, &buttons) == -1) {
xf86Msg(X_ERROR, "Joystick: ioctl JSIOCGBUTTONS on '%s' failed: %s\n",
joystick->device, strerror(errno));
- jstkCloseDevice_joystick(joystick);
+ jstkCloseDevice(joystick);
return -1;
}
if (ioctl(joystick->fd, JSIOCGNAME(128), joy_name) == -1) {
xf86Msg(X_ERROR, "Joystick: ioctl JSIOCGNAME on '%s' failed: %s\n",
joystick->device, strerror(errno));
- jstkCloseDevice_joystick(joystick);
+ jstkCloseDevice(joystick);
return -1;
}
@@ -127,32 +126,13 @@ jstkOpenDevice_joystick(JoystickDevPtr joystick, Bool probe)
joystick->open_proc = jstkOpenDevice_joystick;
joystick->read_proc = jstkReadData_joystick;
- joystick->close_proc = jstkCloseDevice_joystick;
+ joystick->close_proc = jstkCloseDevice;
return joystick->fd;
}
/***********************************************************************
*
- * jstkCloseDevice --
- *
- * close the handle.
- *
- ***********************************************************************
- */
-
-static void
-jstkCloseDevice_joystick(JoystickDevPtr joystick)
-{
- if ((joystick->fd >= 0)) {
- xf86CloseSerial(joystick->fd);
- joystick->fd = -1;
- }
-}
-
-
-/***********************************************************************
- *
* jstkReadData --
*
* Reads data from fd and stores it in the JoystickDevRec struct
diff --git a/src/jstk.c b/src/jstk.c
index bee34fc..211fe32 100644
--- a/src/jstk.c
+++ b/src/jstk.c
@@ -34,6 +34,7 @@
#include <xf86Xinput.h>
#include <exevents.h> /* Needed for InitValuator/Proximity stuff */
#include <xf86Opt.h>
+#include <xf86_OSproc.h>
#include <math.h>
#include <xf86Module.h>
@@ -98,6 +99,23 @@ jstkOpenDevice(JoystickDevPtr priv, BOOL probe)
return fd;
}
+/*
+ ***************************************************************************
+ *
+ * jstkCloseDevice --
+ *
+ * Called to close the device specified in priv, this is a helper for
+ * backend proc_close functions
+ *
+ ***************************************************************************
+ */
+void jstkCloseDevice(JoystickDevPtr priv)
+{
+ if ((priv->fd >= 0)) {
+ xf86CloseSerial(priv->fd);
+ priv->fd = -1;
+ }
+}
/*
***************************************************************************
diff --git a/src/jstk.h b/src/jstk.h
index ed5e4a7..4955435 100644
--- a/src/jstk.h
+++ b/src/jstk.h
@@ -123,4 +123,6 @@ typedef struct _JoystickDevRec {
BUTTON button[MAXBUTTONS]; /* Configuration per button */
} JoystickDevRec;
+void jstkCloseDevice(JoystickDevPtr priv);
+
#endif
commit 6de3b75c453e4687b21f6d6acfcf87e7041c4fc5
Author: Hans de Goede <hdegoede@redhat.com>
Date: Thu Mar 13 14:49:51 2014 +0100
Use jstkCloseDevice_* on error in jstkOpenDevice_* backend functions
This is a preparation patch for adding support for server managed fds, this
also fixes a missing free() in an error handling path in the evdev back-end.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/src/backend_bsd.c b/src/backend_bsd.c
index c6ce7b4..9fa3035 100644
--- a/src/backend_bsd.c
+++ b/src/backend_bsd.c
@@ -100,29 +100,27 @@ jstkOpenDevice_bsd(JoystickDevPtr joystick, Bool probe)
if ((rd = hid_get_report_desc(joystick->fd)) == 0) {
xf86Msg(X_ERROR, "Joystick: hid_get_report_desc failed: %s\n",
strerror(errno));
- close(joystick->fd);
- joystick->fd = -1;
+ jstkCloseDevice_bsd(joystick);
return -1;
}
if (ioctl(joystick->fd, USB_GET_REPORT_ID, &report_id) < 0) {
xf86Msg(X_ERROR, "Joystick: ioctl USB_GET_REPORT_ID failed: %s\n",
strerror(errno));
- close(joystick->fd);
- joystick->fd = -1;
+ jstkCloseDevice_bsd(joystick);
return -1;
}
bsddata = (struct jstk_bsd_hid_data*)
malloc(sizeof(struct jstk_bsd_hid_data));
+ joystick->devicedata = (void*) bsddata;
+
bsddata->dlen = hid_report_size(rd, hid_input, report_id);
if ((bsddata->data_buf = malloc(bsddata->dlen)) == NULL) {
fprintf(stderr, "error: couldn't malloc %d bytes\n", bsddata->dlen);
hid_dispose_report_desc(rd);
- free(bsddata);
- close(joystick->fd);
- joystick->fd = -1;
+ jstkCloseDevice_bsd(joystick);
return -1;
}
@@ -181,14 +179,11 @@ jstkOpenDevice_bsd(JoystickDevPtr joystick, Bool probe)
if (!got_something) {
free(bsddata->data_buf);
xf86Msg(X_ERROR, "Joystick: Didn't find any usable axes.\n");
- free(bsddata);
- close(joystick->fd);
- joystick->fd = -1;
+ jstkCloseDevice_bsd(joystick);
return -1;
}
bsddata->hotdata = 0;
- joystick->devicedata = (void*) bsddata;
if (probe == TRUE) {
xf86Msg(X_INFO, "Joystick: %d buttons, %d axes\n",
joystick->num_buttons, joystick->num_axes);
@@ -222,6 +217,7 @@ jstkCloseDevice_bsd(JoystickDevPtr joystick)
if (((struct jstk_bsd_hid_data*)joystick->devicedata)->data_buf)
free(((struct jstk_bsd_hid_data*)joystick->devicedata)->data_buf);
free(joystick->devicedata);
+ joystick->devicedata = NULL;
}
}
diff --git a/src/backend_evdev.c b/src/backend_evdev.c
index ca0b2e0..6d6f644 100644
--- a/src/backend_evdev.c
+++ b/src/backend_evdev.c
@@ -99,16 +99,14 @@ jstkOpenDevice_evdev(JoystickDevPtr joystick, Bool probe)
if (ioctl(joystick->fd, EVIOCGVERSION, &driver_version) == -1) {
xf86Msg(X_ERROR, "Joystick: ioctl EVIOCGVERSION on '%s' failed: %s\n",
joystick->device, strerror(errno));
- close(joystick->fd);
- joystick->fd = -1;
+ jstkCloseDevice_evdev(joystick);
return -1;
}
if (ioctl(joystick->fd, EVIOCGID, &id) == -1) {
xf86Msg(X_ERROR, "Joystick: ioctl EVIOCGID on '%s' failed: %s\n",
joystick->device, strerror(errno));
- close(joystick->fd);
- joystick->fd = -1;
+ jstkCloseDevice_evdev(joystick);
return -1;
}
@@ -118,13 +116,14 @@ jstkOpenDevice_evdev(JoystickDevPtr joystick, Bool probe)
{
xf86Msg(X_ERROR, "Joystick: ioctl EVIOCGBIT on '%s' failed: %s\n",
joystick->device, strerror(errno));
- close(joystick->fd);
- joystick->fd = -1;
+ jstkCloseDevice_evdev(joystick);
return -1;
}
evdevdata = (struct jstk_evdev_data*)
malloc(sizeof(struct jstk_evdev_data));
+ joystick->devicedata = (void*) evdevdata;
+
for (axes=0; axes<ABS_MAX; axes++)
{
evdevdata->axis[axes].number = -1;
@@ -144,9 +143,7 @@ jstkOpenDevice_evdev(JoystickDevPtr joystick, Bool probe)
if (ioctl(joystick->fd, EVIOCGABS(j), &absinfo) == -1) {
xf86Msg(X_ERROR, "Joystick: ioctl EVIOCGABS on '%s' failed: %s\n",
joystick->device, strerror(errno));
- close(joystick->fd);
- joystick->fd = -1;
- free(evdevdata);
+ jstkCloseDevice_evdev(joystick);
return -1;
}
evdevdata->axis[j].number = axes; /* physical -> logical mapping */
@@ -163,8 +160,7 @@ jstkOpenDevice_evdev(JoystickDevPtr joystick, Bool probe)
{
xf86Msg(X_ERROR, "Joystick: ioctl EVIOCGBIT on '%s' failed: %s\n",
joystick->device, strerror(errno));
- close(joystick->fd);
- joystick->fd = -1;
+ jstkCloseDevice_evdev(joystick);
return -1;
}
buttons = 0; /* Our logical index */
@@ -191,7 +187,6 @@ jstkOpenDevice_evdev(JoystickDevPtr joystick, Bool probe)
joystick->open_proc = jstkOpenDevice_evdev;
joystick->read_proc = jstkReadData_evdev;
joystick->close_proc = jstkCloseDevice_evdev;
- joystick->devicedata = (void*) evdevdata;
if (buttons > MAXBUTTONS)
buttons = MAXBUTTONS;
@@ -217,12 +212,12 @@ jstkCloseDevice_evdev(JoystickDevPtr joystick)
{
if ((joystick->fd >= 0)) {
xf86CloseSerial(joystick->fd);
- if (joystick->devicedata) {
- free(joystick->devicedata);
- joystick->devicedata = NULL;
- }
joystick->fd = -1;
}
+ if (joystick->devicedata) {
+ free(joystick->devicedata);
+ joystick->devicedata = NULL;
+ }
}
diff --git a/src/backend_joystick.c b/src/backend_joystick.c
index e61d908..c84654e 100644
--- a/src/backend_joystick.c
+++ b/src/backend_joystick.c
@@ -82,8 +82,7 @@ jstkOpenDevice_joystick(JoystickDevPtr joystick, Bool probe)
if (ioctl(joystick->fd, JSIOCGVERSION, &driver_version) == -1) {
xf86Msg(X_ERROR, "Joystick: ioctl JSIOCGVERSION on '%s' failed: %s\n",
joystick->device, strerror(errno));
- close(joystick->fd);
- joystick->fd = -1;
+ jstkCloseDevice_joystick(joystick);
return -1;
}
if ((driver_version >> 16) < 1) {
@@ -96,24 +95,21 @@ jstkOpenDevice_joystick(JoystickDevPtr joystick, Bool probe)
if (ioctl(joystick->fd, JSIOCGAXES, &axes) == -1) {
xf86Msg(X_ERROR, "Joystick: ioctl JSIOCGAXES on '%s' failed: %s\n",
joystick->device, strerror(errno));
- close(joystick->fd);
- joystick->fd = -1;
+ jstkCloseDevice_joystick(joystick);
return -1;
}
if (ioctl(joystick->fd, JSIOCGBUTTONS, &buttons) == -1) {
xf86Msg(X_ERROR, "Joystick: ioctl JSIOCGBUTTONS on '%s' failed: %s\n",
joystick->device, strerror(errno));
- close(joystick->fd);
- joystick->fd = -1;
+ jstkCloseDevice_joystick(joystick);
return -1;
}
if (ioctl(joystick->fd, JSIOCGNAME(128), joy_name) == -1) {
xf86Msg(X_ERROR, "Joystick: ioctl JSIOCGNAME on '%s' failed: %s\n",
joystick->device, strerror(errno));
- close(joystick->fd);
- joystick->fd = -1;
+ jstkCloseDevice_joystick(joystick);
return -1;
}
commit a976a85aeff4f2511544c0385533d9387957afae
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Wed Jan 30 12:57:51 2013 +1000
Handle DEVICE_ABORT for input ABI 19.1
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
diff --git a/src/jstk.c b/src/jstk.c
index b82481a..bee34fc 100644
--- a/src/jstk.c
+++ b/src/jstk.c
@@ -422,6 +422,11 @@ jstkDeviceControlProc(DeviceIntPtr pJstk,
pJstk->public.on = FALSE;
break;
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) * 100 + GET_ABI_MINOR(ABI_XINPUT_VERSION) >= 1901
+ case DEVICE_ABORT:
+ break;
+#endif
+
default:
ErrorF("unsupported mode=%d\n", what);
return BadValue;
Reply to: