static int ProcXResQueryClientPixmapBytes (ClientPtr client) { REQUEST(xXResQueryClientPixmapBytesReq); xXResQueryClientPixmapBytesReply rep; int clientID; unsigned long bytes; REQUEST_SIZE_MATCH(xXResQueryClientPixmapBytesReq); clientID = CLIENT_ID(stuff->xid); if((clientID >= currentMaxClients) || !clients[clientID]) { client->errorValue = stuff->xid; return BadValue; } bytes = 0; FindClientResourcesByType(clients[clientID], RT_PIXMAP, ResFindPixmaps, (pointer)(&bytes)); /* * Make sure win background pixmaps also held to account. */ FindClientResourcesByType(clients[clientID], RT_WINDOW, ResFindWindowPixmaps, (pointer)(&bytes)); /* * GC Tile & Stipple pixmaps too. */ FindClientResourcesByType(clients[clientID], RT_GC, ResFindGCPixmaps, (pointer)(&bytes)); #ifdef COMPOSITE /* FIXME: include composite pixmaps too */ #endif rep.type = X_Reply; rep.sequenceNumber = client->sequence; rep.length = 0; rep.bytes = bytes; #ifdef _XSERVER64 rep.bytes_overflow = bytes >> 32; #else rep.bytes_overflow = 0; #endif if (client->swapped) { int n; swaps (&rep.sequenceNumber, n); swapl (&rep.length, n); swapl (&rep.bytes, n); swapl (&rep.bytes_overflow, n); } WriteToClient (client,sizeof(xXResQueryClientPixmapBytesReply),(char*)&rep); return (client->noClientException); }
XID winGetWindowID (WindowPtr pWin) { WindowIDPairRec wi = {pWin, 0}; ClientPtr c = wClient(pWin); /* */ FindClientResourcesByType (c, RT_WINDOW, winFindWindow, &wi); #if CYGMULTIWINDOW_DEBUG ErrorF ("winGetWindowID - Window ID: %d\n", wi.id); #endif return wi.id; }
Bool XvideoClientHoldsResource(ClientPtr client) { ResourceLookupRec lookups[] = { {client, 0, {XvRTGrab, RESOURCE_NAME(XvRTGrab)}}, {NULL , 0, { 0 , NULL }} }; ResourceLookupRec *lookup; Bool holds; for (lookup = lookups, holds = FALSE; lookup->client; lookup++) { FindClientResourcesByType(lookup->client, lookup->res.type, FoundResource, lookup); if (lookup->hits > 0) holds = TRUE; } return holds; }