From a22879c6779283684fe4a61543fc95179b4f5d0b Mon Sep 17 00:00:00 2001 From: Alexandr Shadchin Date: Wed, 9 Mar 2011 20:09:59 +0500 Subject: Fix BSD issues with new ABI12 init process. From Bug 34794: "Until xf86-input-mouse-1.6.0, the MousePreInit() function exited if an os specific PreInit function existed. It let the os-specific function finish all initialisations that remained to be done after osInfo->PreInit() was called. The code in master now continues, and does things that the bsdMousePreInit() function in bsd_mouse.c doesn't expect." Fix up wsconsPreInit to deal with the new init process. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=34794 Signed-off-by: Alexandr Shadchin Reviewed-by: Matthieu Herrb Signed-off-by: Peter Hutterer --- src/bsd_mouse.c | 27 +-------------------------- src/mouse.c | 5 +++++ src/mouse.h | 1 + 3 files changed, 7 insertions(+), 26 deletions(-) diff --git a/src/bsd_mouse.c b/src/bsd_mouse.c index e9e2649..14b529d 100644 --- a/src/bsd_mouse.c +++ b/src/bsd_mouse.c @@ -102,7 +102,7 @@ SupportedInterfaces(void) #elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) return MSE_SERIAL | MSE_BUS | MSE_PS2 | MSE_AUTO | MSE_MISC; #else - return MSE_SERIAL | MSE_BUS | MSE_PS2 | MSE_XPS2 | MSE_AUTO; + return MSE_SERIAL | MSE_BUS | MSE_PS2 | MSE_XPS2 | MSE_AUTO | MSE_MISC; #endif } @@ -454,31 +454,6 @@ wsconsPreInit(InputInfoPtr pInfo, const char *protocol, int flags) { MouseDevPtr pMse = pInfo->private; - pMse->protocol = protocol; - xf86Msg(X_CONFIG, "%s: Protocol: %s\n", pInfo->name, protocol); - - /* Collect the options, and process the common options. */ - COLLECT_INPUT_OPTIONS(pInfo, NULL); - xf86ProcessCommonOptions(pInfo, pInfo->options); - - /* Check if the device can be opened. */ - pInfo->fd = xf86OpenSerial(pInfo->options); - if (pInfo->fd == -1) { - if (xf86GetAllowMouseOpenFail()) - xf86Msg(X_WARNING, "%s: cannot open input device\n", pInfo->name); - else { - xf86Msg(X_ERROR, "%s: cannot open input device\n", pInfo->name); - free(pMse); - pInfo->private = NULL; - return FALSE; - } - } - xf86CloseSerial(pInfo->fd); - pInfo->fd = -1; - - /* Process common mouse options (like Emulate3Buttons, etc). */ - pMse->CommonOptions(pInfo); - /* Setup the local input proc. */ pInfo->read_input = wsconsReadInput; pMse->xisbscale = sizeof(struct wscons_event); diff --git a/src/mouse.c b/src/mouse.c index d2377ad..edb998f 100644 --- a/src/mouse.c +++ b/src/mouse.c @@ -252,6 +252,7 @@ static MouseProtocolRec mouseProtocols[] = { /* Misc (usually OS-specific) */ { "SysMouse", MSE_MISC, mlDefaults, PROT_SYSMOUSE }, + { "WSMouse", MSE_MISC, NULL, PROT_WSMOUSE }, /* end of list */ { NULL, MSE_NONE, NULL, PROT_UNKNOWN } @@ -817,6 +818,10 @@ MousePickProtocol(InputInfoPtr pInfo, const char* device, } switch (protocolID) { + case PROT_WSMOUSE: + if (osInfo->PreInit) + osInfo->PreInit(pInfo, protocol, 0); + break; case PROT_UNKNOWN: /* Check for a builtin OS-specific protocol, * and call its PreInit. */ diff --git a/src/mouse.h b/src/mouse.h index 9f5b47e..6e63c54 100644 --- a/src/mouse.h +++ b/src/mouse.h @@ -77,6 +77,7 @@ typedef enum { PROT_BM, PROT_AUTO, PROT_SYSMOUSE, + PROT_WSMOUSE, PROT_NUMPROTOS /* This must always be last. */ } MouseProtocolID; -- cgit v1.2.3