From 75978bd85ea86b4e0a4153d623eaf1d40976f49b Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Fri, 27 Apr 2001 21:17:20 +0000 Subject: [PATCH] added _mesa_free_framebuffer_data() --- src/mesa/main/context.c | 66 +++++++++++++++++++++++++++-------------- src/mesa/main/context.h | 5 +++- 2 files changed, 47 insertions(+), 24 deletions(-) diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index 2d39b526897..87a9749d588 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -1,4 +1,4 @@ -/* $Id: context.c,v 1.133 2001/04/25 18:21:05 brianp Exp $ */ +/* $Id: context.c,v 1.134 2001/04/27 21:17:20 brianp Exp $ */ /* * Mesa 3-D graphics library @@ -361,7 +361,7 @@ _mesa_initialize_framebuffer( GLframebuffer *buffer, assert(visual->alphaBits > 0); } - buffer->Visual = *visual; /* XXX copy instead? */ + buffer->Visual = *visual; buffer->UseSoftwareDepthBuffer = softwareDepth; buffer->UseSoftwareStencilBuffer = softwareStencil; buffer->UseSoftwareAccumBuffer = softwareAccum; @@ -376,32 +376,52 @@ void _mesa_destroy_framebuffer( GLframebuffer *buffer ) { if (buffer) { - if (buffer->DepthBuffer) { - FREE( buffer->DepthBuffer ); - } - if (buffer->Accum) { - FREE( buffer->Accum ); - } - if (buffer->Stencil) { - FREE( buffer->Stencil ); - } - if (buffer->FrontLeftAlpha) { - FREE( buffer->FrontLeftAlpha ); - } - if (buffer->BackLeftAlpha) { - FREE( buffer->BackLeftAlpha ); - } - if (buffer->FrontRightAlpha) { - FREE( buffer->FrontRightAlpha ); - } - if (buffer->BackRightAlpha) { - FREE( buffer->BackRightAlpha ); - } + _mesa_free_framebuffer_data(buffer); FREE(buffer); } } +/* + * Free the data hanging off of , but not itself. + */ +void +_mesa_free_framebuffer_data( GLframebuffer *buffer ) +{ + if (!buffer) + return; + + if (buffer->DepthBuffer) { + FREE( buffer->DepthBuffer ); + buffer->DepthBuffer = NULL; + } + if (buffer->Accum) { + FREE( buffer->Accum ); + buffer->Accum = NULL; + } + if (buffer->Stencil) { + FREE( buffer->Stencil ); + buffer->Stencil = NULL; + } + if (buffer->FrontLeftAlpha) { + FREE( buffer->FrontLeftAlpha ); + buffer->FrontLeftAlpha = NULL; + } + if (buffer->BackLeftAlpha) { + FREE( buffer->BackLeftAlpha ); + buffer->BackLeftAlpha = NULL; + } + if (buffer->FrontRightAlpha) { + FREE( buffer->FrontRightAlpha ); + buffer->FrontRightAlpha = NULL; + } + if (buffer->BackRightAlpha) { + FREE( buffer->BackRightAlpha ); + buffer->BackRightAlpha = NULL; + } +} + + /**********************************************************************/ /***** Context allocation, initialization, destroying *****/ diff --git a/src/mesa/main/context.h b/src/mesa/main/context.h index e4e5c5f1c20..825881b8704 100644 --- a/src/mesa/main/context.h +++ b/src/mesa/main/context.h @@ -1,4 +1,4 @@ -/* $Id: context.h,v 1.25 2001/03/12 00:48:37 gareth Exp $ */ +/* $Id: context.h,v 1.26 2001/04/27 21:17:20 brianp Exp $ */ /* * Mesa 3-D graphics library @@ -117,6 +117,9 @@ _mesa_initialize_framebuffer( GLframebuffer *fb, GLboolean softwareAccum, GLboolean softwareAlpha ); +extern void +_mesa_free_framebuffer_data( GLframebuffer *buffer ); + extern void _mesa_destroy_framebuffer( GLframebuffer *buffer );