Commit c2c6e9e6 authored by Adam Jackson's avatar Adam Jackson

dix: Don't track the XKB client versions in the ClientRec

XKB stores some stuff in the ClientRec that, style-wise, should probably
be in a client private.  vMinor tracks the client's idea of the XKB
minor version, but is never read, we can just nuke it.  vMajor is only
used for a bug-compat workaround for X11R6.0-vintage clients.  We're
only using though (1<<4) for xkbClientFlags in the protocol, so we can
pack that field down to a u8 and store the bug-compat flag there.
Signed-off-by: 's avatarAdam Jackson <ajax@redhat.com>
Reviewed-by: Julien Cristau's avatarJulien Cristau <jcristau@debian.org>
parent bc5fb8c0
......@@ -100,10 +100,9 @@ typedef struct _Client {
CARD32 req_len; /* length of current request */
unsigned int replyBytesRemaining;
PrivateRec *devPrivates;
unsigned short xkbClientFlags;
unsigned short mapNotifyMask;
unsigned short newKeyboardNotifyMask;
unsigned short vMajor, vMinor;
unsigned char xkbClientFlags;
KeyCode minKC, maxKC;
int smart_start_tick;
......
......@@ -235,7 +235,8 @@ typedef struct _XkbSrvLedInfo {
* Settings for xkbClientFlags field (used by DIX)
* These flags _must_ not overlap with XkbPCF_*
*/
#define _XkbClientInitialized (1<<15)
#define _XkbClientInitialized (1<<7)
#define _XkbClientIsAncient (1<<6)
#define _XkbWantsDetectableAutoRepeat(c)\
((c)->xkbClientFlags&XkbPCF_DetectableAutoRepeatMask)
......
......@@ -172,8 +172,8 @@ ProcXkbUseExtension(ClientPtr client)
if ((supported) && (!(client->xkbClientFlags & _XkbClientInitialized))) {
client->xkbClientFlags = _XkbClientInitialized;
client->vMajor = stuff->wantedMajor;
client->vMinor = stuff->wantedMinor;
if (stuff->wantedMajor == 0)
client->xkbClientFlags |= _XkbClientIsAncient;
}
else if (xkbDebugFlags & 0x1) {
ErrorF
......@@ -2388,7 +2388,8 @@ _XkbSetMapChecks(ClientPtr client, DeviceIntPtr dev, xkbSetMapReq * req,
if ((xkb->min_key_code != req->minKeyCode) ||
(xkb->max_key_code != req->maxKeyCode)) {
if (client->vMajor != 1) { /* pre 1.0 versions of Xlib have a bug */
if (client->xkbClientFlags & _XkbClientIsAncient) {
/* pre 1.0 versions of Xlib have a bug */
req->minKeyCode = xkb->min_key_code;
req->maxKeyCode = xkb->max_key_code;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment