summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2014-03-13 14:49:52 +0100
committerPeter Hutterer <peter.hutterer@who-t.net>2014-03-20 12:13:35 +1000
commit341d23ceaa9d5483b5318425e7308e09f8941957 (patch)
tree039d7b133a99f3e211eb2ce9b43990437a32fc86
parent6de3b75c453e4687b21f6d6acfcf87e7041c4fc5 (diff)
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>
-rw-r--r--src/backend_bsd.c5
-rw-r--r--src/backend_evdev.c5
-rw-r--r--src/backend_joystick.c30
-rw-r--r--src/jstk.c18
-rw-r--r--src/jstk.h2
5 files changed, 27 insertions, 33 deletions
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