diff options
author | Alexandr Shadchin <Alexandr.Shadchin@gmail.com> | 2011-03-09 20:09:59 +0500 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2011-03-10 08:31:19 +1000 |
commit | a22879c6779283684fe4a61543fc95179b4f5d0b (patch) | |
tree | 1407dcaf38ceec44a1087696ca9468f5d9aadc90 | |
parent | 2e507df6704ebd2cab6ada450ed40d89a2d3ca19 (diff) |
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 <Alexandr.Shadchin@gmail.com>
Reviewed-by: Matthieu Herrb <matthieu.herrb@laas.fr>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r-- | src/bsd_mouse.c | 27 | ||||
-rw-r--r-- | src/mouse.c | 5 | ||||
-rw-r--r-- | 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; |