Lines Matching +full:client +full:- +full:id

2  * Copyright 2007-2008 Peter Hutterer
34 #include <dix-config.h>
76 ev->type = GenericEvent; in XISendDeviceHierarchyEvent()
77 ev->extension = IReqCode; in XISendDeviceHierarchyEvent()
78 ev->evtype = XI_HierarchyChanged; in XISendDeviceHierarchyEvent()
79 ev->time = GetTimeInMillis(); in XISendDeviceHierarchyEvent()
80 ev->flags = 0; in XISendDeviceHierarchyEvent()
81 ev->num_info = inputInfo.numDevices; in XISendDeviceHierarchyEvent()
84 for (dev = inputInfo.devices; dev; dev = dev->next) { in XISendDeviceHierarchyEvent()
85 info->deviceid = dev->id; in XISendDeviceHierarchyEvent()
86 info->enabled = dev->enabled; in XISendDeviceHierarchyEvent()
87 info->use = GetDeviceUse(dev, &info->attachment); in XISendDeviceHierarchyEvent()
88 info->flags = flags[dev->id]; in XISendDeviceHierarchyEvent()
89 ev->flags |= info->flags; in XISendDeviceHierarchyEvent()
92 for (dev = inputInfo.off_devices; dev; dev = dev->next) { in XISendDeviceHierarchyEvent()
93 info->deviceid = dev->id; in XISendDeviceHierarchyEvent()
94 info->enabled = dev->enabled; in XISendDeviceHierarchyEvent()
95 info->use = GetDeviceUse(dev, &info->attachment); in XISendDeviceHierarchyEvent()
96 info->flags = flags[dev->id]; in XISendDeviceHierarchyEvent()
97 ev->flags |= info->flags; in XISendDeviceHierarchyEvent()
103 info->deviceid = i; in XISendDeviceHierarchyEvent()
104 info->enabled = FALSE; in XISendDeviceHierarchyEvent()
105 info->flags = flags[i]; in XISendDeviceHierarchyEvent()
106 info->use = 0; in XISendDeviceHierarchyEvent()
107 ev->flags |= info->flags; in XISendDeviceHierarchyEvent()
108 ev->num_info++; in XISendDeviceHierarchyEvent()
113 ev->length = bytes_to_int32(ev->num_info * sizeof(xXIHierarchyInfo)); in XISendDeviceHierarchyEvent()
116 dummyDev.id = XIAllDevices; in XISendDeviceHierarchyEvent()
125 * This procedure allows a client to change the device hierarchy through
131 SProcXIChangeHierarchy(ClientPtr client) in SProcXIChangeHierarchy() argument
134 swaps(&stuff->length); in SProcXIChangeHierarchy()
135 return (ProcXIChangeHierarchy(client)); in SProcXIChangeHierarchy()
139 add_master(ClientPtr client, xXIAddMasterInfo * c, int flags[MAXDEVICES]) in add_master() argument
145 name = calloc(c->name_len + 1, sizeof(char)); in add_master()
150 strncpy(name, (char *) &c[1], c->name_len); in add_master()
152 rc = AllocDevicePair(client, name, &ptr, &keybd, in add_master()
157 if (!c->send_core) in add_master()
158 ptr->coreEvents = keybd->coreEvents = FALSE; in add_master()
161 rc = AllocXTestDevice(client, name, &XTestptr, &XTestkeybd, ptr, keybd); in add_master()
170 flags[ptr->id] |= XIMasterAdded; in add_master()
171 flags[keybd->id] |= XIMasterAdded; in add_master()
175 flags[XTestptr->id] |= XISlaveAdded; in add_master()
176 flags[XTestkeybd->id] |= XISlaveAdded; in add_master()
178 if (c->enable) { in add_master()
181 flags[ptr->id] |= XIDeviceEnabled; in add_master()
182 flags[keybd->id] |= XIDeviceEnabled; in add_master()
186 flags[XTestptr->id] |= XIDeviceEnabled; in add_master()
187 flags[XTestkeybd->id] |= XIDeviceEnabled; in add_master()
194 flags[XTestptr->id] |= XISlaveAttached; in add_master()
195 flags[XTestkeybd->id] |= XISlaveAttached; in add_master()
198 XIBarrierNewMasterDevice(clients[i], ptr->id); in add_master()
211 ClientPtr client = clients[i]; in disable_clientpointer() local
213 if (client && client->clientPtr == dev) in disable_clientpointer()
214 client->clientPtr = NULL; in disable_clientpointer()
219 remove_master(ClientPtr client, xXIRemoveMasterInfo * r, int flags[MAXDEVICES]) in remove_master() argument
224 if (r->return_mode != XIAttachToMaster && r->return_mode != XIFloating) in remove_master()
227 rc = dixLookupDevice(&ptr, r->deviceid, client, DixDestroyAccess); in remove_master()
232 client->errorValue = r->deviceid; in remove_master()
244 rc = dixLookupDevice(&ptr, ptr->id, client, DixDestroyAccess); in remove_master()
248 rc = dixLookupDevice(&keybd, keybd->id, client, DixDestroyAccess); in remove_master()
253 rc = dixLookupDevice(&XTestptr, XTestptr->id, client, DixDestroyAccess); in remove_master()
258 rc = dixLookupDevice(&XTestkeybd, XTestkeybd->id, client, DixDestroyAccess); in remove_master()
266 if (r->return_mode == XIAttachToMaster) { in remove_master()
269 rc = dixLookupDevice(&newptr, r->return_pointer, client, DixAddAccess); in remove_master()
274 client->errorValue = r->return_pointer; in remove_master()
279 rc = dixLookupDevice(&newkeybd, r->return_keyboard, in remove_master()
280 client, DixAddAccess); in remove_master()
285 client->errorValue = r->return_keyboard; in remove_master()
290 for (attached = inputInfo.devices; attached; attached = attached->next) { in remove_master()
293 AttachDevice(client, attached, newptr); in remove_master()
294 flags[attached->id] |= XISlaveAttached; in remove_master()
297 AttachDevice(client, attached, newkeybd); in remove_master()
298 flags[attached->id] |= XISlaveAttached; in remove_master()
305 XIBarrierRemoveMasterDevice(clients[i], ptr->id); in remove_master()
313 flags[XTestptr->id] |= XIDeviceDisabled | XISlaveDetached; in remove_master()
314 flags[XTestkeybd->id] |= XIDeviceDisabled | XISlaveDetached; in remove_master()
315 flags[keybd->id] |= XIDeviceDisabled; in remove_master()
316 flags[ptr->id] |= XIDeviceDisabled; in remove_master()
318 flags[XTestptr->id] |= XISlaveRemoved; in remove_master()
319 flags[XTestkeybd->id] |= XISlaveRemoved; in remove_master()
320 flags[keybd->id] |= XIMasterRemoved; in remove_master()
321 flags[ptr->id] |= XIMasterRemoved; in remove_master()
333 detach_slave(ClientPtr client, xXIDetachSlaveInfo * c, int flags[MAXDEVICES]) in detach_slave() argument
338 rc = dixLookupDevice(&dev, c->deviceid, client, DixManageAccess); in detach_slave()
343 client->errorValue = c->deviceid; in detach_slave()
350 client->errorValue = c->deviceid; in detach_slave()
356 AttachDevice(client, dev, NULL); in detach_slave()
357 flags[dev->id] |= XISlaveDetached; in detach_slave()
364 attach_slave(ClientPtr client, xXIAttachSlaveInfo * c, int flags[MAXDEVICES]) in attach_slave() argument
370 rc = dixLookupDevice(&dev, c->deviceid, client, DixManageAccess); in attach_slave()
375 client->errorValue = c->deviceid; in attach_slave()
382 client->errorValue = c->deviceid; in attach_slave()
387 rc = dixLookupDevice(&newmaster, c->new_master, client, DixAddAccess); in attach_slave()
391 client->errorValue = c->new_master; in attach_slave()
403 AttachDevice(client, dev, newmaster); in attach_slave()
404 flags[dev->id] |= XISlaveAttached; in attach_slave()
410 #define SWAPIF(cmd) if (client->swapped) { cmd; }
413 ProcXIChangeHierarchy(ClientPtr client) in ProcXIChangeHierarchy() argument
423 if (!stuff->num_changes) in ProcXIChangeHierarchy()
426 len = ((size_t)client->req_len << 2) - sizeof(xXIChangeHierarchyReq); in ProcXIChangeHierarchy()
429 while (stuff->num_changes--) { in ProcXIChangeHierarchy()
435 SWAPIF(swaps(&any->type)); in ProcXIChangeHierarchy()
436 SWAPIF(swaps(&any->length)); in ProcXIChangeHierarchy()
438 if (len < ((size_t)any->length << 2)) in ProcXIChangeHierarchy()
443 if ((len < sizeof(type)) || (any->length != (sizeof(type) >> 2))) { \ in ProcXIChangeHierarchy()
449 switch (any->type) { in ProcXIChangeHierarchy()
459 SWAPIF(swaps(&c->name_len)); in ProcXIChangeHierarchy()
460 if (c->name_len > (len - sizeof(xXIAddMasterInfo))) { in ProcXIChangeHierarchy()
465 rc = add_master(client, c, flags); in ProcXIChangeHierarchy()
475 rc = remove_master(client, r, flags); in ProcXIChangeHierarchy()
485 rc = detach_slave(client, c, flags); in ProcXIChangeHierarchy()
495 rc = attach_slave(client, c, flags); in ProcXIChangeHierarchy()
502 len -= any->length * 4; in ProcXIChangeHierarchy()
503 any = (xXIAnyHierarchyChangeInfo *) ((char *) any + any->length * 4); in ProcXIChangeHierarchy()