summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMandeep Singh Baines <mandeep.baines@gmail.com>2012-04-10 14:48:14 -0700
committerKristian Høgsberg <krh@bitplanet.net>2012-04-10 19:08:12 -0400
commit0695cf68f5afb903f93cc3779444d095b218271d (patch)
tree8cf013f9f385ab508ad3079263201b8783c58ef0
parenta27c7d80afc3160a0face4b8781bf921229bc3cc (diff)
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@chromium.org> Signed-off-by: Kristian Høgsberg <krh@bitplanet.net>
-rw-r--r--src/egl/drivers/dri2/platform_drm.c9
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 18ecd173f4e..54067ff7814 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;