vl/dri3: fix a memory leak from front buffer
authorLeo Liu <leo.liu@amd.com>
Thu, 14 Jul 2016 13:19:59 +0000 (09:19 -0400)
committerLeo Liu <leo.liu@amd.com>
Mon, 18 Jul 2016 13:20:40 +0000 (09:20 -0400)
Inspired by fix for mem leak of vdpau interop, resource_from_handle
set texture reference count, that need to be decreased and released,
recall there is a similar case for DRI3, that is with VA-API glx
extension, there is temporary TFP(texture from pixmap), we target it
through dma-buf. leak happens when without count down the reference.

Checked and found with mpv vo=opengl case, there only one static TFP,
the leak happens once, but for totem player using gstreamer VA-API glx,
the dynamic TFP for each frame, so leak quite a bit.

This fixes mem leak for mpv and totem.

Signed-off-by: Leo Liu <leo.liu@amd.com>
Cc: "12.0" <mesa-stable@lists.freedesktop.org>
src/gallium/auxiliary/vl/vl_winsys_dri3.c

index f7f572ea5c2b3f1fdb1a5e6106427eb24eb5d4f6..493e64574a6ca2a50803abbba1e947ea48e29c55 100644 (file)
@@ -89,6 +89,7 @@ dri3_free_front_buffer(struct vl_dri3_screen *scrn,
 {
    xcb_sync_destroy_fence(scrn->conn, buffer->sync_fence);
    xshmfence_unmap_shm(buffer->shm_fence);
+   pipe_resource_reference(&buffer->texture, NULL);
    FREE(buffer);
 }