fix VBO clean-up in vbo_exec_vtx_destroy()

This commit is contained in:
Brian 2007-08-20 11:05:35 -06:00
parent df1df82f16
commit f252974121

View file

@ -673,7 +673,8 @@ void vbo_exec_vtx_init( struct vbo_exec_context *exec )
GLuint i;
/* Allocate a buffer object. Will just reuse this object
* continuously.
* continuously, unless vbo_use_buffer_objects() is called to enable
* use of real VBOs.
*/
exec->vtx.bufferobj = ctx->Array.NullBufferObj;
exec->vtx.buffer_map = ALIGN_MALLOC(VBO_VERT_BUFFER_SIZE * sizeof(GLfloat), 64);
@ -702,9 +703,17 @@ void vbo_exec_vtx_init( struct vbo_exec_context *exec )
void vbo_exec_vtx_destroy( struct vbo_exec_context *exec )
{
if (exec->vtx.buffer_map) {
ALIGN_FREE(exec->vtx.buffer_map);
exec->vtx.buffer_map = NULL;
GLcontext *ctx = exec->ctx;
if (exec->vtx.bufferobj->Name) {
ctx->Driver.UnmapBuffer(ctx, GL_ARRAY_BUFFER_ARB, exec->vtx.bufferobj);
ctx->Driver.DeleteBuffer(ctx, exec->vtx.bufferobj);
exec->vtx.bufferobj = NULL;
}
else {
if (exec->vtx.buffer_map) {
ALIGN_FREE(exec->vtx.buffer_map);
exec->vtx.buffer_map = NULL;
}
}
}