aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/Xi/xiqueryversion.c
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2013-07-29 08:50:02 +0200
committermarha <marha@users.sourceforge.net>2013-07-29 08:50:02 +0200
commit4c8cee9b5a37db30af50aafcbf54b36b9fd9e03a (patch)
tree30b754ce6f4bb714f948a1bcec554335d402e42b /xorg-server/Xi/xiqueryversion.c
parent8647aa1a5029fcd96f134103331ddf3c21bc0a0b (diff)
downloadvcxsrv-4c8cee9b5a37db30af50aafcbf54b36b9fd9e03a.tar.gz
vcxsrv-4c8cee9b5a37db30af50aafcbf54b36b9fd9e03a.tar.bz2
vcxsrv-4c8cee9b5a37db30af50aafcbf54b36b9fd9e03a.zip
libX11 mesa xserver git update 29 July 2013
xserver commit ff38bbe81ace85bf675bbaa0a9ca5f3b32ede449 libX11 commit 208e586c808e88a2ee819e4450dc27f557afc2bf mesa commit e847b5ae066bf9a209dad482fcc664f944983633
Diffstat (limited to 'xorg-server/Xi/xiqueryversion.c')
-rw-r--r--xorg-server/Xi/xiqueryversion.c36
1 files changed, 30 insertions, 6 deletions
diff --git a/xorg-server/Xi/xiqueryversion.c b/xorg-server/Xi/xiqueryversion.c
index b807a53ce..6c7b9c058 100644
--- a/xorg-server/Xi/xiqueryversion.c
+++ b/xorg-server/Xi/xiqueryversion.c
@@ -71,13 +71,37 @@ ProcXIQueryVersion(ClientPtr client)
pXIClient = dixLookupPrivate(&client->devPrivates, XIClientPrivateKey);
if (pXIClient->major_version) {
- if (version_compare(stuff->major_version, stuff->minor_version,
- pXIClient->major_version, pXIClient->minor_version) < 0) {
- client->errorValue = stuff->major_version;
- return BadValue;
+
+ /* Check to see if the client has only ever asked
+ * for version 2.2 or higher
+ */
+ if (version_compare(stuff->major_version, stuff->minor_version, 2, 2) >= 0 &&
+ version_compare(pXIClient->major_version, pXIClient->minor_version, 2, 2) >= 0)
+ {
+
+ /* As of version 2.2, Peter promises to never again break
+ * backward compatibility, so we'll return the requested
+ * version to the client but leave the server internal
+ * version set to the highest requested value
+ */
+ major = stuff->major_version;
+ minor = stuff->minor_version;
+ if (version_compare(stuff->major_version, stuff->minor_version,
+ pXIClient->major_version, pXIClient->minor_version) > 0)
+ {
+ pXIClient->major_version = stuff->major_version;
+ pXIClient->minor_version = stuff->minor_version;
+ }
+ } else {
+ if (version_compare(stuff->major_version, stuff->minor_version,
+ pXIClient->major_version, pXIClient->minor_version) < 0) {
+
+ client->errorValue = stuff->major_version;
+ return BadValue;
+ }
+ major = pXIClient->major_version;
+ minor = pXIClient->minor_version;
}
- major = pXIClient->major_version;
- minor = pXIClient->minor_version;
} else {
if (version_compare(XIVersion.major_version, XIVersion.minor_version,
stuff->major_version, stuff->minor_version) > 0) {