Xext: re-do the XGE versioning handling.
Basically the same approach RandR takes. Remember which one the client requested, send back the one the server supports. Also divide XGE server version (now defined in geext.c) and the client's version (still in the protocol definition).
This commit is contained in:
parent
5f3e5b3462
commit
745b90cde1
33
Xext/geext.c
33
Xext/geext.c
|
@ -1,4 +1,4 @@
|
||||||
/*
|
/*
|
||||||
|
|
||||||
Copyright 2007 Peter Hutterer <peter@cs.unisa.edu.au>
|
Copyright 2007 Peter Hutterer <peter@cs.unisa.edu.au>
|
||||||
|
|
||||||
|
@ -36,6 +36,11 @@ from the author.
|
||||||
#include "geint.h"
|
#include "geint.h"
|
||||||
#include "geext.h"
|
#include "geext.h"
|
||||||
|
|
||||||
|
/* Currently supported XGE version */
|
||||||
|
#define SERVER_GE_MAJOR 1
|
||||||
|
#define SERVER_GE_MINOR 0
|
||||||
|
|
||||||
|
|
||||||
int GEEventBase;
|
int GEEventBase;
|
||||||
int GEErrorBase;
|
int GEErrorBase;
|
||||||
DevPrivateKey GEClientPrivateKey = &GEClientPrivateKey;
|
DevPrivateKey GEClientPrivateKey = &GEClientPrivateKey;
|
||||||
|
@ -73,20 +78,13 @@ static int ProcGEQueryVersion(ClientPtr client)
|
||||||
rep.length = 0;
|
rep.length = 0;
|
||||||
rep.sequenceNumber = client->sequence;
|
rep.sequenceNumber = client->sequence;
|
||||||
|
|
||||||
if (stuff->majorVersion < GE_MAJOR) {
|
/* return the supported version by the server */
|
||||||
rep.majorVersion = stuff->majorVersion;
|
rep.majorVersion = SERVER_GE_MAJOR;
|
||||||
rep.minorVersion = stuff->minorVersion;
|
rep.minorVersion = SERVER_GE_MINOR;
|
||||||
} else {
|
|
||||||
rep.majorVersion = GE_MAJOR;
|
|
||||||
if (stuff->majorVersion == GE_MAJOR &&
|
|
||||||
stuff->minorVersion < GE_MINOR)
|
|
||||||
rep.minorVersion = stuff->minorVersion;
|
|
||||||
else
|
|
||||||
rep.minorVersion = GE_MINOR;
|
|
||||||
}
|
|
||||||
|
|
||||||
pGEClient->major_version = rep.majorVersion;
|
/* Remember version the client requested */
|
||||||
pGEClient->minor_version = rep.minorVersion;
|
pGEClient->major_version = stuff->majorVersion;
|
||||||
|
pGEClient->minor_version = stuff->minorVersion;
|
||||||
|
|
||||||
if (client->swapped)
|
if (client->swapped)
|
||||||
{
|
{
|
||||||
|
@ -156,7 +154,12 @@ SProcGEDispatch(ClientPtr client)
|
||||||
return (*SProcGEVector[stuff->ReqType])(client);
|
return (*SProcGEVector[stuff->ReqType])(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* new client callback */
|
/**
|
||||||
|
* Called when a new client inits a connection to the X server.
|
||||||
|
*
|
||||||
|
* We alloc a simple struct to store the client's major/minor version. Can be
|
||||||
|
* used in the furture for versioning support.
|
||||||
|
*/
|
||||||
static void GEClientCallback(CallbackListPtr *list,
|
static void GEClientCallback(CallbackListPtr *list,
|
||||||
pointer closure,
|
pointer closure,
|
||||||
pointer data)
|
pointer data)
|
||||||
|
|
Loading…
Reference in New Issue