Simplify wsPreInit

ok matthieu@
This commit is contained in:
shadchin
2011-11-09 16:08:42 +00:00
parent e6f2cf8c55
commit 2800db42b2

View File

@@ -13,7 +13,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/ */
/* $OpenBSD: ws.c,v 1.44 2011/11/09 16:07:13 shadchin Exp $ */ /* $OpenBSD: ws.c,v 1.45 2011/11/09 16:08:42 shadchin Exp $ */
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
#include "config.h" #include "config.h"
@@ -125,7 +125,7 @@ wsPreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
WSDevicePtr priv; WSDevicePtr priv;
MessageType buttons_from = X_CONFIG; MessageType buttons_from = X_CONFIG;
char *s; char *s;
int rc; int rc = BadValue;
priv = (WSDevicePtr)calloc(1, sizeof(WSDeviceRec)); priv = (WSDevicePtr)calloc(1, sizeof(WSDeviceRec));
if (priv == NULL) { if (priv == NULL) {
@@ -142,7 +142,6 @@ wsPreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
priv->devName = xf86SetStrOption(pInfo->options, "Device", NULL); priv->devName = xf86SetStrOption(pInfo->options, "Device", NULL);
if (priv->devName == NULL) { if (priv->devName == NULL) {
xf86IDrvMsg(pInfo, X_ERROR, "No Device specified.\n"); xf86IDrvMsg(pInfo, X_ERROR, "No Device specified.\n");
rc = BadValue;
goto fail; goto fail;
} }
priv->buttons = xf86SetIntOption(pInfo->options, "Buttons", 0); priv->buttons = xf86SetIntOption(pInfo->options, "Buttons", 0);
@@ -200,11 +199,8 @@ wsPreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
priv->screen_no = xf86SetIntOption(pInfo->options, "ScreenNo", 0); priv->screen_no = xf86SetIntOption(pInfo->options, "ScreenNo", 0);
xf86IDrvMsg(pInfo, X_CONFIG, "associated screen: %d\n", xf86IDrvMsg(pInfo, X_CONFIG, "associated screen: %d\n",
priv->screen_no); priv->screen_no);
if (priv->screen_no >= screenInfo.numScreens || if (priv->screen_no < 0 || priv->screen_no >= screenInfo.numScreens)
priv->screen_no < 0) {
priv->screen_no = 0; priv->screen_no = 0;
}
priv->swap_axes = xf86SetBoolOption(pInfo->options, "SwapXY", 0); priv->swap_axes = xf86SetBoolOption(pInfo->options, "SwapXY", 0);
if (priv->swap_axes) { if (priv->swap_axes) {
@@ -234,15 +230,10 @@ wsPreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
} }
free(s); free(s);
} }
if (wsOpen(pInfo) != Success) { if (wsOpen(pInfo) != Success)
rc = BadValue;
goto fail; goto fail;
} if (ioctl(pInfo->fd, WSMOUSEIO_GTYPE, &priv->type) != 0)
if (ioctl(pInfo->fd, WSMOUSEIO_GTYPE, &priv->type) != 0) {
wsClose(pInfo);
rc = BadValue;
goto fail; goto fail;
}
if (priv->type == WSMOUSE_TYPE_TPANEL) { if (priv->type == WSMOUSE_TYPE_TPANEL) {
pInfo->type_name = XI_TOUCHSCREEN; pInfo->type_name = XI_TOUCHSCREEN;
priv->raw = xf86SetBoolOption(pInfo->options, "Raw", 1); priv->raw = xf86SetBoolOption(pInfo->options, "Raw", 1);
@@ -260,8 +251,6 @@ wsPreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
&priv->coords) != 0) { &priv->coords) != 0) {
xf86IDrvMsg(pInfo, X_ERROR, xf86IDrvMsg(pInfo, X_ERROR,
"GCALIBCOORS failed %s\n", strerror(errno)); "GCALIBCOORS failed %s\n", strerror(errno));
wsClose(pInfo);
rc = BadValue;
goto fail; goto fail;
} }
@@ -299,6 +288,8 @@ wsPreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
return Success; return Success;
fail: fail:
if (pInfo->fd >= 0)
wsClose(pInfo);
if (priv != NULL) { if (priv != NULL) {
free(priv); free(priv);
pInfo->private = NULL; pInfo->private = NULL;