Signed-off-by: Rami Ylimäki <rami.ylim...@vincit.fi> --- Xext/xres.c | 14 ++++++++++++++ render/picture.c | 22 ++++++++++++++++++++++ 2 files changed, 36 insertions(+), 0 deletions(-)
diff --git a/Xext/xres.c b/Xext/xres.c index e2fd8a7..ae9735a 100644 --- a/Xext/xres.c +++ b/Xext/xres.c @@ -216,6 +216,13 @@ ResFindGCPixmaps (pointer value, XID id, pointer cdata) ResFindResourcePixmaps(value, id, RT_GC, cdata); } +static RESTYPE RT_PICTURE = RT_NONE; +static void +ResFindPicturePixmaps (pointer value, XID id, pointer cdata) +{ + ResFindResourcePixmaps(value, id, RT_PICTURE, cdata); +} + static int ProcXResQueryClientPixmapBytes (ClientPtr client) { @@ -252,6 +259,13 @@ ProcXResQueryClientPixmapBytes (ClientPtr client) ResFindGCPixmaps, (pointer)(&bytes)); + /* Render extension picture pixmaps. */ + RT_PICTURE = LookupResourceType("PICTURE"); + if (RT_PICTURE != RT_NONE) + FindClientResourcesByType(clients[clientID], RT_PICTURE, + ResFindPicturePixmaps, + (pointer)(&bytes)); + #ifdef COMPOSITE /* FIXME: include composite pixmaps too */ #endif diff --git a/render/picture.c b/render/picture.c index 7fda6b9..64d9b72 100644 --- a/render/picture.c +++ b/render/picture.c @@ -606,6 +606,27 @@ PictureParseCmapPolicy (const char *name) return PictureCmapPolicyInvalid; } +/** @see GetDefaultBytes */ +static void +GetPictureBytes(pointer value, XID id, ResourceSizePtr size) +{ + PicturePtr picture = value; + + /* Currently only pixmap bytes are reported to clients. */ + size->resourceSize = 0; + + /* Calculate pixmap reference sizes. */ + size->pixmapRefSize = 0; + if (picture->pDrawable && (picture->pDrawable->type == DRAWABLE_PIXMAP)) + { + SizeType pixmapSizeFunc = GetResourceTypeSizeFunc(RT_PIXMAP); + ResourceSizeRec pixmapSize = { 0, 0 }; + PixmapPtr pixmap = (PixmapPtr)picture->pDrawable; + pixmapSizeFunc(pixmap, pixmap->drawable.id, &pixmapSize); + size->pixmapRefSize += pixmapSize.pixmapRefSize; + } +} + Bool PictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats) { @@ -618,6 +639,7 @@ PictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats) PictureType = CreateNewResourceType (FreePicture, "PICTURE"); if (!PictureType) return FALSE; + SetResourceTypeSizeFunc(PictureType, GetPictureBytes); PictFormatType = CreateNewResourceType (FreePictFormat, "PICTFORMAT"); if (!PictFormatType) return FALSE; -- 1.6.3.3 _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel