[Intel-gfx] [PATCH] Buffers created for fb should be released when destroy drawable

Shuang He shuang.he at intel.com
Mon Jun 1 05:21:21 CEST 2009


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

diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c
index 2728823..9904e34 100644
--- a/src/mesa/drivers/dri/intel/intel_screen.c
+++ b/src/mesa/drivers/dri/intel/intel_screen.c
@@ -395,6 +395,30 @@ intelCreateBuffer(__DRIscreenPrivate * driScrnPriv,
 static void
 intelDestroyBuffer(__DRIdrawablePrivate * driDrawPriv)
 {
+   struct intel_framebuffer *intel_fb = driDrawPriv->driverPrivate;
+   struct intel_renderbuffer *depth_rb;
+   struct intel_renderbuffer *stencil_rb;
+   if (intel_fb->color_rb[0]) {
+	intel_renderbuffer_set_region(intel_fb->color_rb[0], NULL);
+	intel_fb->color_rb[0]->region = NULL;
+   }
+
+   if (intel_fb->color_rb[1]) {
+	intel_renderbuffer_set_region(intel_fb->color_rb[1], NULL);
+	intel_fb->color_rb[1]->region = NULL;
+   }
+   depth_rb = intel_get_renderbuffer(&intel_fb->Base, BUFFER_DEPTH);
+   if (depth_rb) {
+	intel_renderbuffer_set_region(depth_rb, NULL);
+	depth_rb->region = NULL;
+   }
+
+   stencil_rb = intel_get_renderbuffer(&intel_fb->Base, BUFFER_STENCIL);
+   if (stencil_rb) {
+	intel_renderbuffer_set_region(stencil_rb, NULL);
+	stencil_rb->region = NULL;
+   }
+
    _mesa_reference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate)), NULL);
 }
 
-- 
1.6.0.3




More information about the Intel-gfx mailing list