Note that those drivers are barely maintained and might disappear in the futur PR: 216275 Submitted by: matthew@reztek.cz
82 lines
2.1 KiB
Text
82 lines
2.1 KiB
Text
From ff389f91a2efec5184b56b8c717091d067f8fc46 Mon Sep 17 00:00:00 2001
|
|
From: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Date: Tue, 19 Jul 2011 13:07:41 +1000
|
|
Subject: Don't free anything in PreInit, let the server call UnInit instead
|
|
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
|
|
diff --git a/src/xf86PM.c b/src/xf86PM.c
|
|
index 97e2134..ef73164 100644
|
|
--- src/xf86PM.c
|
|
+++ src/xf86PM.c
|
|
@@ -79,7 +79,7 @@ _X_EXPORT InputDriverRec PENMOUNT = {
|
|
"penmount",
|
|
NULL,
|
|
PenMountPreInit,
|
|
- /*PenMountUnInit*/NULL,
|
|
+ PenMountUnInit,
|
|
NULL,
|
|
default_options
|
|
};
|
|
@@ -275,6 +275,7 @@ ProcessDeviceClose(PenMountPrivatePtr priv, DeviceIntPtr dev, InputInfoPtr pInfo
|
|
priv->buffer = NULL;
|
|
}
|
|
xf86CloseSerial(pInfo->fd);
|
|
+ pInfo->fd = -1;
|
|
}
|
|
dev->public.on = FALSE;
|
|
return (Success);
|
|
@@ -454,6 +455,8 @@ PenMountPreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
|
|
goto SetupProc_fail;
|
|
}
|
|
xf86CloseSerial(pInfo->fd);
|
|
+ pInfo->fd = -1;
|
|
+
|
|
/*
|
|
* Process the options for your device like this
|
|
*/
|
|
@@ -495,16 +498,21 @@ PenMountPreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
|
|
return Success;
|
|
|
|
SetupProc_fail:
|
|
- if ((pInfo) && (pInfo->fd))
|
|
- xf86CloseSerial (pInfo->fd);
|
|
- if ((pInfo) && (pInfo->name))
|
|
- free (pInfo->name);
|
|
+ return BadValue;
|
|
+}
|
|
+
|
|
+static void
|
|
+PenMountUnInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
|
|
+{
|
|
+ PenMountPrivatePtr priv = (PenMountPrivatePtr) (pInfo->private);
|
|
|
|
- if ((priv) && (priv->buffer))
|
|
- XisbFree (priv->buffer);
|
|
if (priv)
|
|
+ {
|
|
+ if (priv->buffer)
|
|
+ XisbFree (priv->buffer);
|
|
free (priv);
|
|
- return BadValue;
|
|
+ pInfo->private = NULL;
|
|
+ }
|
|
}
|
|
|
|
static Bool
|
|
diff --git a/src/xf86PM.h b/src/xf86PM.h
|
|
index 5183f91..88da048 100644
|
|
--- src/xf86PM.h
|
|
+++ src/xf86PM.h
|
|
@@ -93,6 +93,8 @@ static Bool PenMountSendPacket (PenMountPrivatePtr priv, unsigned char *buf, int
|
|
|
|
static int
|
|
PenMountPreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags);
|
|
+static void
|
|
+PenMountUnInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags);
|
|
|
|
static void
|
|
PenMountPtrCtrl(DeviceIntPtr device, PtrCtrl *ctrl);
|
|
--
|
|
cgit v0.10.2
|
|
|