diff options
author | marha <marha@users.sourceforge.net> | 2013-07-29 08:50:02 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2013-07-29 08:50:02 +0200 |
commit | 4c8cee9b5a37db30af50aafcbf54b36b9fd9e03a (patch) | |
tree | 30b754ce6f4bb714f948a1bcec554335d402e42b /xorg-server/Xi/xiqueryversion.c | |
parent | 8647aa1a5029fcd96f134103331ddf3c21bc0a0b (diff) | |
download | vcxsrv-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.c | 36 |
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) { |