diff options
author | Daniel Stone <daniels@collabora.com> | 2014-04-03 18:22:50 +0100 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2014-04-03 16:40:03 -0700 |
commit | b851ca968b7cce6d1a6438c05d3d5c8832249704 (patch) | |
tree | 462dbf3754c25cae17359399a0b469d564894078 /composite | |
parent | b4d0bec22c15930abf13a7fb9d684208ccd56b1d (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.c | 13 |
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; } |