destroy left-over VBOs on shutdown

This commit is contained in:
Tilman Sauerbeck
2006-06-29 18:36:51 +00:00
parent ff3a5b1842
commit f7f5b2c415
3 changed files with 25 additions and 3 deletions
+6 -2
View File
@@ -385,8 +385,12 @@ static void r300FreeGartAllocations(r300ContextPtr r300)
if (r300->rmm->u_list[i].ptr == NULL) {
continue;
}
assert(r300->rmm->u_list[i].pending);
/* check whether this buffer is still in use */
if (!r300->rmm->u_list[i].pending) {
continue;
}
assert(r300->rmm->u_list[i].h_pending == 0);
tries = 0;
+5 -1
View File
@@ -202,9 +202,13 @@ GLboolean radeonInitContext(radeonContextPtr radeon,
void radeonCleanupContext(radeonContextPtr radeon)
{
/* free the Mesa context */
radeon->glCtx->DriverCtx = NULL;
_mesa_destroy_context(radeon->glCtx);
/* the above call might result in calls to functions that depend on
* the DriverCtx.
*/
radeon->glCtx->DriverCtx = NULL;
if (radeon->state.scissor.pClipRects) {
FREE(radeon->state.scissor.pClipRects);
radeon->state.scissor.pClipRects = 0;
+14
View File
@@ -888,6 +888,20 @@ free_shared_state( GLcontext *ctx, struct gl_shared_state *ss )
#endif
#if FEATURE_ARB_vertex_buffer_object
/* Free vertex buffer objects */
while (1) {
GLuint name = _mesa_HashFirstEntry(ss->BufferObjects);
if (name) {
struct gl_buffer_object *bufObj = (struct gl_buffer_object *)
_mesa_HashLookup(ss->BufferObjects, name);
ASSERT(bufObj);
ctx->Driver.DeleteBuffer(ctx, bufObj);
_mesa_HashRemove(ss->BufferObjects, name);
}
else {
break;
}
}
_mesa_DeleteHashTable(ss->BufferObjects);
#endif