Mesa (mesa_7_4_branch): intel: Release fb backing regions in intelDestroyBuffer()

Brian Paul brianp at kemper.freedesktop.org
Mon Jun 15 22:24:18 UTC 2009


Module: Mesa
Branch: mesa_7_4_branch
Commit: 6d62b8d5c19d69abe8925aff76705363f6b7ce33
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6d62b8d5c19d69abe8925aff76705363f6b7ce33

Author: Brian Paul <brianp at vmware.com>
Date:   Mon Jun 15 16:22:54 2009 -0600

intel: Release fb backing regions in intelDestroyBuffer()

Fixes memory leak when destroying framebuffers.

(cherry picked from mesa_7_5_branch, commit d027e8feff7d38cccadc6aaccc0454b21ce4dca0)

---

 src/mesa/drivers/dri/intel/intel_screen.c |   26 +++++++++++++++++++++++++-
 1 files changed, 25 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c
index 4bd11dd..59fa54f 100644
--- a/src/mesa/drivers/dri/intel/intel_screen.c
+++ b/src/mesa/drivers/dri/intel/intel_screen.c
@@ -385,7 +385,31 @@ intelCreateBuffer(__DRIscreenPrivate * driScrnPriv,
 static void
 intelDestroyBuffer(__DRIdrawablePrivate * driDrawPriv)
 {
-   _mesa_unreference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)));
+   struct intel_framebuffer *intel_fb = driDrawPriv->driverPrivate;
+   struct intel_renderbuffer *depth_rb;
+   struct intel_renderbuffer *stencil_rb;
+
+   if (intel_fb) {
+      if (intel_fb->color_rb[0]) {
+         intel_renderbuffer_set_region(intel_fb->color_rb[0], NULL);
+      }
+
+      if (intel_fb->color_rb[1]) {
+         intel_renderbuffer_set_region(intel_fb->color_rb[1], NULL);
+      }
+
+      depth_rb = intel_get_renderbuffer(&intel_fb->Base, BUFFER_DEPTH);
+      if (depth_rb) {
+         intel_renderbuffer_set_region(depth_rb, NULL);
+      }
+
+      stencil_rb = intel_get_renderbuffer(&intel_fb->Base, BUFFER_STENCIL);
+      if (stencil_rb) {
+         intel_renderbuffer_set_region(stencil_rb, NULL);
+      }
+   }
+
+   _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL);
 }
 
 




More information about the mesa-commit mailing list