xserver/composite compext.c,1.5,1.6
Keith Packard <xserver-commit-u7BhqnqprCWvj1b/[email protected]>
| Newsgroups | gmane.comp.freedesktop.xserver.cvs |
|---|---|
| Message-ID | <[email protected]> |
Committed by: keithp Update of /cvs/xserver/xserver/composite In directory pdx:/tmp/cvs-serv768/composite Modified Files: compext.c Log Message: 2004-07-08 Keith Packard <[email protected]> * composite/compext.c: (ProcCompositeNameWindowPixmap), (CompositeNumberRequests), (SProcCompositeNameWindowPixmap): Add Composite 0.2 request (NameWindowPixmap) Index: compext.c =================================================================== RCS file: /cvs/xserver/xserver/composite/compext.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- compext.c 8 Jul 2004 06:53:59 -0000 1.5 +++ compext.c 8 Jul 2004 07:38:12 -0000 1.6 @@ -208,6 +208,40 @@ return(client->noClientException); } +static int +ProcCompositeNameWindowPixmap (ClientPtr client) +{ + WindowPtr pWin; + CompWindowPtr cw; + PixmapPtr pPixmap; + REQUEST(xCompositeNameWindowPixmapReq); + + REQUEST_SIZE_MATCH(xCompositeNameWindowPixmapReq); + pWin = (WindowPtr) LookupIDByType (stuff->window, RT_WINDOW); + if (!pWin) + { + client->errorValue = stuff->window; + return BadWindow; + } + + LEGAL_NEW_RESOURCE (stuff->pixmap, client); + + cw = GetCompWindow (pWin); + if (!cw) + return BadMatch; + + pPixmap = (*pWin->drawable.pScreen->GetWindowPixmap) (pWin); + if (!pPixmap) + return BadMatch; + + ++pPixmap->refcnt; + + if (!AddResource (stuff->pixmap, RT_PIXMAP, (pointer) pPixmap)) + return BadAlloc; + + return(client->noClientException); +} + int (*ProcCompositeVector[CompositeNumberRequests])(ClientPtr) = { ProcCompositeQueryVersion, ProcCompositeRedirectWindow, @@ -215,6 +249,7 @@ ProcCompositeUnredirectWindow, ProcCompositeUnredirectSubwindows, ProcCompositeCreateRegionFromBorderClip, + ProcCompositeNameWindowPixmap, }; static int @@ -302,6 +337,19 @@ return (*ProcCompositeVector[stuff->compositeReqType]) (client); } +static int +SProcCompositeNameWindowPixmap (ClientPtr client) +{ + int n; + REQUEST(xCompositeNameWindowPixmapReq); + + swaps(&stuff->length, n); + REQUEST_SIZE_MATCH(xCompositeNameWindowPixmapReq); + swapl (&stuff->window, n); + swapl (&stuff->pixmap, n); + return (*ProcCompositeVector[stuff->compositeReqType]) (client); +} + int (*SProcCompositeVector[CompositeNumberRequests])(ClientPtr) = { SProcCompositeQueryVersion, SProcCompositeRedirectWindow, @@ -309,6 +357,7 @@ SProcCompositeUnredirectWindow, SProcCompositeUnredirectSubwindows, SProcCompositeCreateRegionFromBorderClip, + SProcCompositeNameWindowPixmap, }; static int