summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2010-01-11 16:35:36 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2010-02-02 15:25:40 +1000
commit635e760c6e87e14c402b73e5389714c2aded8424 (patch)
tree9508ac1534a67424e681e4ec75a320d95f5e9f91
parent820ed0f3d4b7b5fc2374be16af24b5c1fc8e124d (diff)
Xi: assume BadMode for non-BadMatch errors returned from SetDeviceMode.1.8-fixes
The XI protocol spec only allows for two errors on the SetDeviceMode requests: BadMatch or BadMode. BadMode however is a dynamically assigned extension error and the driver doesn't have access to the actual error number. Hence, if a SetDeviceMode driver returns an error other than BadMatch, assume BadMode. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r--Xi/setmode.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/Xi/setmode.c b/Xi/setmode.c
index 51e57675f..cc9f7f501 100644
--- a/Xi/setmode.c
+++ b/Xi/setmode.c
@@ -112,7 +112,11 @@ ProcXSetDeviceMode(ClientPtr client)
if (rep.status == Success)
dev->valuator->mode = stuff->mode;
else if (rep.status != AlreadyGrabbed)
+ {
+ if (rep.status != BadMatch)
+ rep.status = BadMode;
return rep.status;
+ }
WriteReplyToClient(client, sizeof(xSetDeviceModeReply), &rep);
return Success;