static void reply_XIQueryVersion(ClientPtr client, int len, char* data, void *userdata) { xXIQueryVersionReply *rep = (xXIQueryVersionReply*)data; struct test_data *versions = (struct test_data*)userdata; unsigned int sver, cver, ver; if (client->swapped) { char n; swapl(&rep->length, n); swaps(&rep->sequenceNumber, n); swaps(&rep->major_version, n); swaps(&rep->minor_version, n); } reply_check_defaults(rep, len, XIQueryVersion); g_assert(rep->length == 0); sver = versions->major_server * 1000 + versions->minor_server; cver = versions->major_client * 1000 + versions->minor_client; ver = rep->major_version * 1000 + rep->minor_version; g_assert(ver >= 2000); g_assert((sver > cver) ? ver == cver : ver == sver); }
static void reply_XIQueryPointer(ClientPtr client, int len, char *data, void *userdata) { xXIQueryPointerReply *rep = (xXIQueryPointerReply*)data; SpritePtr sprite; if (!rep->repType) return; if (client->swapped) { char n; swapl(&rep->length, n); swaps(&rep->sequenceNumber, n); swapl(&rep->root, n); swapl(&rep->child, n); swapl(&rep->root_x, n); swapl(&rep->root_y, n); swapl(&rep->win_x, n); swapl(&rep->win_y, n); swaps(&rep->buttons_len, n); } reply_check_defaults(rep, len, XIQueryPointer); g_assert(rep->root == root.drawable.id); g_assert(rep->same_screen == xTrue); sprite = test_data.dev->spriteInfo->sprite; g_assert((rep->root_x >> 16) == sprite->hot.x); g_assert((rep->root_y >> 16) == sprite->hot.y); if (test_data.win == &root) { g_assert(rep->root_x == rep->win_x); g_assert(rep->root_y == rep->win_y); g_assert(rep->child == window.drawable.id); } else { int x, y; x = sprite->hot.x - window.drawable.x; y = sprite->hot.y - window.drawable.y; g_assert((rep->win_x >> 16) == x); g_assert((rep->win_y >> 16) == y); g_assert(rep->child == None); } g_assert(rep->same_screen == xTrue); reply_handler = reply_XIQueryPointer_data; }
static void reply_XIGetClientPointer(ClientPtr client, int len, char *data, void *userdata) { xXIGetClientPointerReply *rep = (xXIGetClientPointerReply *) data; if (client->swapped) { swapl(&rep->length); swaps(&rep->sequenceNumber); swaps(&rep->deviceid); } reply_check_defaults(rep, len, XIGetClientPointer); assert(rep->set == test_data.cp_is_set); if (rep->set) assert(rep->deviceid == test_data.dev->id); }
static void reply_XIGetSelectedEvents(ClientPtr client, int len, char *data, void *userdata) { xXIGetSelectedEventsReply *rep = (xXIGetSelectedEventsReply *) data; if (client->swapped) { swapl(&rep->length); swaps(&rep->sequenceNumber); swaps(&rep->num_masks); } reply_check_defaults(rep, len, XIGetSelectedEvents); assert(rep->num_masks == test_data.num_masks_expected); reply_handler = reply_XIGetSelectedEvents_data; }
static void reply_XIPassiveGrabDevice(ClientPtr client, int len, char *data, void *closure) { xXIPassiveGrabDeviceReply *rep = (xXIPassiveGrabDeviceReply *) data; if (client->swapped) { swaps(&rep->sequenceNumber); swapl(&rep->length); swaps(&rep->num_modifiers); testdata.num_modifiers = rep->num_modifiers; } reply_check_defaults(rep, len, XIPassiveGrabDevice); /* ProcXIPassiveGrabDevice sends the data in two batches, let the second * handler handle the modifier data */ if (rep->num_modifiers > 0) reply_handler = reply_XIPassiveGrabDevice_data; }
/* reply handling for the first bytes that constitute the reply */ static void reply_XIQueryDevice(ClientPtr client, int len, char* data, void *userdata) { xXIQueryDeviceReply *rep = (xXIQueryDeviceReply*)data; struct test_data *querydata = (struct test_data*)userdata; if (client->swapped) { swapl(&rep->length); swaps(&rep->sequenceNumber); swaps(&rep->num_devices); } reply_check_defaults(rep, len, XIQueryDevice); if (querydata->which_device == XIAllDevices) assert(rep->num_devices == devices.num_devices); else if (querydata->which_device == XIAllMasterDevices) assert(rep->num_devices == devices.num_master_devices); else assert(rep->num_devices == 1); querydata->num_devices_in_reply = rep->num_devices; reply_handler = reply_XIQueryDevice_data; }