summaryrefslogtreecommitdiff
path: root/composite
diff options
context:
space:
mode:
authorDaniel Stone <daniels@collabora.com>2014-04-03 18:22:50 +0100
committerKeith Packard <keithp@keithp.com>2014-04-03 16:40:03 -0700
commitb851ca968b7cce6d1a6438c05d3d5c8832249704 (patch)
tree462dbf3754c25cae17359399a0b469d564894078 /composite
parentb4d0bec22c15930abf13a7fb9d684208ccd56b1d (diff)
Add pScreen->NameWindowPixmap hook
This hook allows drivers to be notified when a pixmap gains a new ID. (ABI break.) Signed-off-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'composite')
-rw-r--r--composite/compext.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/composite/compext.c b/composite/compext.c
index a945f721f..cadedbd37 100644
--- a/composite/compext.c
+++ b/composite/compext.c
@@ -239,6 +239,7 @@ ProcCompositeNameWindowPixmap(ClientPtr client)
WindowPtr pWin;
CompWindowPtr cw;
PixmapPtr pPixmap;
+ ScreenPtr pScreen;
int rc;
REQUEST(xCompositeNameWindowPixmapReq);
@@ -246,6 +247,8 @@ ProcCompositeNameWindowPixmap(ClientPtr client)
REQUEST_SIZE_MATCH(xCompositeNameWindowPixmapReq);
VERIFY_WINDOW(pWin, stuff->window, client, DixGetAttrAccess);
+ pScreen = pWin->drawable.pScreen;
+
if (!pWin->viewable)
return BadMatch;
@@ -255,7 +258,7 @@ ProcCompositeNameWindowPixmap(ClientPtr client)
if (!cw)
return BadMatch;
- pPixmap = (*pWin->drawable.pScreen->GetWindowPixmap) (pWin);
+ pPixmap = (*pScreen->GetWindowPixmap) (pWin);
if (!pPixmap)
return BadMatch;
@@ -270,6 +273,14 @@ ProcCompositeNameWindowPixmap(ClientPtr client)
if (!AddResource(stuff->pixmap, RT_PIXMAP, (void *) pPixmap))
return BadAlloc;
+ if (pScreen->NameWindowPixmap) {
+ rc = pScreen->NameWindowPixmap(pWin, pPixmap, stuff->pixmap);
+ if (rc != Success) {
+ FreeResource(stuff->pixmap, RT_NONE);
+ return rc;
+ }
+ }
+
return Success;
}