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:
committed by
Erkki Seppälä
parent
e83388cc70
commit
b8d0d19a6d
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user