composite: Report pixmap usage of client windows to resource extension.

Signed-off-by: Erkki Seppälä <erkki.seppala@vincit.fi>
Signed-off-by: Rami Ylimäki <rami.ylimaki@vincit.fi>
Reviewed-by: Mikhail Gusarov <dottedmag@dottedmag.net>
Reviewed-by: Tiago Vignatti <tiago.vignatti@nokia.com>
This commit is contained in:
Rami Ylimäki
2010-10-27 17:25:50 +03:00
committed by Erkki Seppälä
parent e83388cc70
commit b8d0d19a6d
2 changed files with 38 additions and 1 deletions

View File

@@ -497,6 +497,28 @@ SProcCompositeDispatch(ClientPtr client)
return BadRequest;
}
/** @see GetDefaultBytes */
static void
GetCompositeClientWindowBytes(pointer value, XID id, ResourceSizePtr size)
{
WindowPtr window = value;
/* Currently only pixmap bytes are reported to clients. */
size->resourceSize = 0;
/* Calculate pixmap reference sizes. */
size->pixmapRefSize = 0;
if (window->redirectDraw != RedirectDrawNone)
{
SizeType pixmapSizeFunc = GetResourceTypeSizeFunc(RT_PIXMAP);
ResourceSizeRec pixmapSize = { 0, 0 };
ScreenPtr screen = window->drawable.pScreen;
PixmapPtr pixmap = screen->GetWindowPixmap(window);
pixmapSizeFunc(pixmap, pixmap->drawable.id, &pixmapSize);
size->pixmapRefSize += pixmapSize.pixmapRefSize;
}
}
void
CompositeExtensionInit(void)
{
@@ -529,6 +551,9 @@ CompositeExtensionInit(void)
if (!CompositeClientWindowType)
return;
SetResourceTypeSizeFunc(CompositeClientWindowType,
GetCompositeClientWindowBytes);
CompositeClientSubwindowsType = CreateNewResourceType
(FreeCompositeClientSubwindows, "CompositeClientSubwindows");
if (!CompositeClientSubwindowsType)