Mesa (master): egl_dri2: fix aux buffer leak in drm platform

Kristian Høgsberg krh at kemper.freedesktop.org
Tue Apr 10 23:08:03 UTC 2012


Module: Mesa
Branch: master
Commit: 0695cf68f5afb903f93cc3779444d095b218271d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0695cf68f5afb903f93cc3779444d095b218271d

Author: Mandeep Singh Baines <mandeep.baines at gmail.com>
Date:   Tue Apr 10 14:48:14 2012 -0700

egl_dri2: fix aux buffer leak in drm platform

Keep a reference to any newly allocated aux buffers to avoid
re-allocating for every st_framebuffer_validate() (i.e. leaking).

Signed-off-by: Mandeep Singh Baines <msb at chromium.org>
Signed-off-by: Kristian Høgsberg <krh at bitplanet.net>

---

 src/egl/drivers/dri2/platform_drm.c |    9 ++++-----
 1 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/src/egl/drivers/dri2/platform_drm.c b/src/egl/drivers/dri2/platform_drm.c
index 18ecd17..54067ff 100644
--- a/src/egl/drivers/dri2/platform_drm.c
+++ b/src/egl/drivers/dri2/platform_drm.c
@@ -220,16 +220,15 @@ get_aux_bo(struct dri2_egl_surface *dri2_surf,
 {
    struct dri2_egl_display *dri2_dpy =
       dri2_egl_display(dri2_surf->base.Resource.Display);
-   __DRIbuffer *b;
+   __DRIbuffer *b = dri2_surf->dri_buffers[attachment];
 
-   b = NULL;
-   if (dri2_surf->dri_buffers[attachment])
-      b = dri2_surf->dri_buffers[attachment];
-   if (b == NULL)
+   if (b == NULL) {
       b = dri2_dpy->dri2->allocateBuffer(dri2_dpy->dri_screen,
 					 attachment, format,
 					 dri2_surf->base.Width,
 					 dri2_surf->base.Height);
+      dri2_surf->dri_buffers[attachment] = b;
+   }
    if (b == NULL)
       return -1;
 




More information about the mesa-commit mailing list