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>
This commit is contained in:
parent
b4d0bec22c
commit
b851ca968b
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -356,6 +356,8 @@ typedef Bool (*ReplaceScanoutPixmapProcPtr)(DrawablePtr, PixmapPtr, Bool);
|
|||
typedef WindowPtr (*XYToWindowProcPtr)(ScreenPtr pScreen,
|
||||
SpritePtr pSprite, int x, int y);
|
||||
|
||||
typedef int (*NameWindowPixmapProcPtr)(WindowPtr, PixmapPtr, CARD32);
|
||||
|
||||
typedef struct _Screen {
|
||||
int myNum; /* index of this instance in Screens[] */
|
||||
ATOM id;
|
||||
|
@ -466,6 +468,7 @@ typedef struct _Screen {
|
|||
SetWindowPixmapProcPtr SetWindowPixmap;
|
||||
GetScreenPixmapProcPtr GetScreenPixmap;
|
||||
SetScreenPixmapProcPtr SetScreenPixmap;
|
||||
NameWindowPixmapProcPtr NameWindowPixmap;
|
||||
|
||||
PixmapPtr pScratchPixmap; /* scratch pixmap "pool" */
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user