Merge remote-tracking branch 'whot/for-keith'
This commit is contained in:
commit
da1660deeb
|
@ -143,6 +143,10 @@ add_master(ClientPtr client, xXIAddMasterInfo * c, int flags[MAXDEVICES])
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
name = calloc(c->name_len + 1, sizeof(char));
|
name = calloc(c->name_len + 1, sizeof(char));
|
||||||
|
if (name == NULL) {
|
||||||
|
rc = BadAlloc;
|
||||||
|
goto unwind;
|
||||||
|
}
|
||||||
strncpy(name, (char *) &c[1], c->name_len);
|
strncpy(name, (char *) &c[1], c->name_len);
|
||||||
|
|
||||||
rc = AllocDevicePair(client, name, &ptr, &keybd,
|
rc = AllocDevicePair(client, name, &ptr, &keybd,
|
||||||
|
|
|
@ -63,7 +63,7 @@ SProcXIPassiveGrabDevice(ClientPtr client)
|
||||||
swaps(&stuff->mask_len);
|
swaps(&stuff->mask_len);
|
||||||
swaps(&stuff->num_modifiers);
|
swaps(&stuff->num_modifiers);
|
||||||
|
|
||||||
mods = (uint32_t *) &stuff[1];
|
mods = (uint32_t *) &stuff[1] + stuff->mask_len;
|
||||||
|
|
||||||
for (i = 0; i < stuff->num_modifiers; i++, mods++) {
|
for (i = 0; i < stuff->num_modifiers; i++, mods++) {
|
||||||
swapl(mods);
|
swapl(mods);
|
||||||
|
|
|
@ -137,6 +137,7 @@ request_XIPassiveGrabDevice(ClientPtr client, xXIPassiveGrabDeviceReq * req,
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
int local_modifiers;
|
int local_modifiers;
|
||||||
|
int mask_len;
|
||||||
|
|
||||||
rc = ProcXIPassiveGrabDevice(&client_request);
|
rc = ProcXIPassiveGrabDevice(&client_request);
|
||||||
assert(rc == error);
|
assert(rc == error);
|
||||||
|
@ -153,10 +154,11 @@ request_XIPassiveGrabDevice(ClientPtr client, xXIPassiveGrabDeviceReq * req,
|
||||||
swaps(&req->deviceid);
|
swaps(&req->deviceid);
|
||||||
local_modifiers = req->num_modifiers;
|
local_modifiers = req->num_modifiers;
|
||||||
swaps(&req->num_modifiers);
|
swaps(&req->num_modifiers);
|
||||||
|
mask_len = req->mask_len;
|
||||||
swaps(&req->mask_len);
|
swaps(&req->mask_len);
|
||||||
|
|
||||||
while (local_modifiers--) {
|
while (local_modifiers--) {
|
||||||
CARD32 *mod = ((CARD32 *) (req + 1)) + local_modifiers;
|
CARD32 *mod = (CARD32 *) (req + 1) + mask_len + local_modifiers;
|
||||||
|
|
||||||
swapl(mod);
|
swapl(mod);
|
||||||
}
|
}
|
||||||
|
@ -228,6 +230,11 @@ test_XIPassiveGrabDevice(void)
|
||||||
request->detail = XIAnyButton;
|
request->detail = XIAnyButton;
|
||||||
request_XIPassiveGrabDevice(&client_request, request, Success, 0);
|
request_XIPassiveGrabDevice(&client_request, request, Success, 0);
|
||||||
|
|
||||||
|
/* Set a few random masks to make sure we handle modifiers correctly */
|
||||||
|
SetBit(mask, XI_ButtonPress);
|
||||||
|
SetBit(mask, XI_KeyPress);
|
||||||
|
SetBit(mask, XI_Enter);
|
||||||
|
|
||||||
/* some modifiers */
|
/* some modifiers */
|
||||||
request->num_modifiers = N_MODS;
|
request->num_modifiers = N_MODS;
|
||||||
request->length += N_MODS;
|
request->length += N_MODS;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user