dri2: free slave pixmap on app exit

When the drawable disappears we need to free the prime master/slave combos.

This fixes a leak after a prime app is run.

Signed-off-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Dave Airlie 2012-08-03 16:42:44 +10:00
parent 1a465fef9b
commit 64623ef90d

View File

@ -409,6 +409,11 @@ DRI2DrawableGone(pointer p, XID id)
dixSetPrivate(&pPixmap->devPrivates, dri2PixmapPrivateKey, NULL); dixSetPrivate(&pPixmap->devPrivates, dri2PixmapPrivateKey, NULL);
} }
if (pPriv->prime_slave_pixmap) {
(*pPriv->prime_slave_pixmap->master_pixmap->drawable.pScreen->DestroyPixmap)(pPriv->prime_slave_pixmap->master_pixmap);
(*pPriv->prime_slave_pixmap->drawable.pScreen->DestroyPixmap)(pPriv->prime_slave_pixmap);
}
if (pPriv->buffers != NULL) { if (pPriv->buffers != NULL) {
for (i = 0; i < pPriv->bufferCount; i++) for (i = 0; i < pPriv->bufferCount; i++)
destroy_buffer(pDraw, pPriv->buffers[i], pPriv->prime_id); destroy_buffer(pDraw, pPriv->buffers[i], pPriv->prime_id);