[PATCH xf86-input-wacom 2/3] Add a wcmClose helper function
Hans de Goede
hdegoede at redhat.com
Wed Mar 12 08:12:04 PDT 2014
This is a preparation patch for adding server managed fds support.
Signed-off-by: Hans de Goede <hdegoede at redhat.com>
---
src/wcmConfig.c | 13 ++-----------
src/xf86Wacom.c | 32 ++++++++++++++++++++++----------
src/xf86Wacom.h | 3 +++
3 files changed, 27 insertions(+), 21 deletions(-)
diff --git a/src/wcmConfig.c b/src/wcmConfig.c
index bb2c975..d19b9b4 100644
--- a/src/wcmConfig.c
+++ b/src/wcmConfig.c
@@ -601,11 +601,7 @@ static int wcmPreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
wcmHotplugOthers(pInfo, oldname);
}
- if (pInfo->fd != -1)
- {
- close(pInfo->fd);
- pInfo->fd = -1;
- }
+ wcmClose(pInfo);
/* only link them once per port. We need to try for both tablet tool
* and touch since we do not know which tool will be added first.
@@ -623,12 +619,7 @@ SetupProc_fail:
if (common && priv)
common->wcmDevices = priv->next;
- if (pInfo->fd != -1)
- {
- close(pInfo->fd);
- pInfo->fd = -1;
- }
-
+ wcmClose(pInfo);
free(type);
free(oldname);
return BadMatch;
diff --git a/src/xf86Wacom.c b/src/xf86Wacom.c
index b0a60ff..3057d7a 100644
--- a/src/xf86Wacom.c
+++ b/src/xf86Wacom.c
@@ -55,6 +55,10 @@
#define XIGetKnownProperty(prop) 0
#endif
+#ifndef XI86_SERVER_FD
+#define XI86_SERVER_FD 0x20
+#endif
+
static int wcmDevOpen(DeviceIntPtr pWcm);
static int wcmReady(InputInfoPtr pInfo);
static void wcmDevReadInput(InputInfoPtr pInfo);
@@ -544,6 +548,22 @@ Bool wcmOpen(InputInfoPtr pInfo)
}
/*****************************************************************************
+ * wcmClose --
+ ****************************************************************************/
+
+void wcmClose(InputInfoPtr pInfo)
+{
+ WacomDevicePtr priv = (WacomDevicePtr)pInfo->private;
+
+ DBG(1, priv, "closing device file\n");
+
+ if (pInfo->fd > -1 && !(pInfo->flags & XI86_SERVER_FD)) {
+ xf86CloseSerial(pInfo->fd);
+ pInfo->fd = -1;
+ }
+}
+
+/*****************************************************************************
* wcmDevOpen --
* Open the physical device and init information structs.
****************************************************************************/
@@ -564,12 +584,7 @@ static int wcmDevOpen(DeviceIntPtr pWcm)
if ((wcmOpen (pInfo) != Success) || !common->device_path)
{
DBG(1, priv, "Failed to open device (fd=%d)\n", pInfo->fd);
- if (pInfo->fd >= 0)
- {
- DBG(1, priv, "Closing device\n");
- xf86CloseSerial(pInfo->fd);
- }
- pInfo->fd = -1;
+ wcmClose(pInfo);
return FALSE;
}
@@ -745,10 +760,7 @@ static void wcmDevClose(InputInfoPtr pInfo)
{
pInfo->fd = -1;
if (!--common->fd_refs)
- {
- DBG(1, common, "Closing device; uninitializing.\n");
- xf86CloseSerial (common->fd);
- }
+ wcmClose(pInfo);
}
}
diff --git a/src/xf86Wacom.h b/src/xf86Wacom.h
index c0448f2..882d8cd 100644
--- a/src/xf86Wacom.h
+++ b/src/xf86Wacom.h
@@ -106,6 +106,9 @@ struct _WacomModule
/* Open the device with the right serial parmeters */
extern Bool wcmOpen(InputInfoPtr pInfo);
+/* Close the device */
+extern void wcmClose(InputInfoPtr pInfo);
+
/* device autoprobing */
char *wcmEventAutoDevProbe (InputInfoPtr pInfo);
--
1.9.0
More information about the xorg-devel
mailing list