osmesa: fix renderbuffer memleak in OSMesaMakeCurrent()

Fixes fd.o bug 31128.
This commit is contained in:
Brian Paul 2010-10-30 10:10:52 -06:00
parent 156e955c25
commit 9c2b4814d0
1 changed files with 6 additions and 4 deletions

View File

@ -1327,10 +1327,12 @@ OSMesaMakeCurrent( OSMesaContext osmesa, void *buffer, GLenum type,
* that converts rendering from CHAN_BITS to the user-requested channel * that converts rendering from CHAN_BITS to the user-requested channel
* size. * size.
*/ */
osmesa->rb = new_osmesa_renderbuffer(&osmesa->mesa, osmesa->format, type); if (!osmesa->rb) {
_mesa_remove_renderbuffer(osmesa->gl_buffer, BUFFER_FRONT_LEFT); osmesa->rb = new_osmesa_renderbuffer(&osmesa->mesa, osmesa->format, type);
_mesa_add_renderbuffer(osmesa->gl_buffer, BUFFER_FRONT_LEFT, osmesa->rb); _mesa_remove_renderbuffer(osmesa->gl_buffer, BUFFER_FRONT_LEFT);
assert(osmesa->rb->RefCount == 2); _mesa_add_renderbuffer(osmesa->gl_buffer, BUFFER_FRONT_LEFT, osmesa->rb);
assert(osmesa->rb->RefCount == 2);
}
/* Set renderbuffer fields. Set width/height = 0 to force /* Set renderbuffer fields. Set width/height = 0 to force
* osmesa_renderbuffer_storage() being called by _mesa_resize_framebuffer() * osmesa_renderbuffer_storage() being called by _mesa_resize_framebuffer()