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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.