summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandr Shadchin <Alexandr.Shadchin@gmail.com>2011-03-09 20:09:59 +0500
committerPeter Hutterer <peter.hutterer@who-t.net>2011-03-10 08:31:19 +1000
commita22879c6779283684fe4a61543fc95179b4f5d0b (patch)
tree1407dcaf38ceec44a1087696ca9468f5d9aadc90
parent2e507df6704ebd2cab6ada450ed40d89a2d3ca19 (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.c27
-rw-r--r--src/mouse.c5
-rw-r--r--src/mouse.h1
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;