From 4293a12c7f0d4fd7ac3a278570f3fe55fc4433a6 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Fri, 11 Mar 2011 09:25:21 -0700 Subject: mesa: call FLUSH_VERTICES() before deleting shaders, buffers, query objects Need to flush rendering (or at least indicate that the rug might be getting pulled out from underneath us) when a shader, buffer object or query object is about to be deleted. Also, this helps to tell the VBO module to unmap its current vertex buffer. --- src/mesa/main/bufferobj.c | 1 + src/mesa/main/queryobj.c | 1 + src/mesa/main/shaderapi.c | 3 +++ 3 files changed, 5 insertions(+) (limited to 'src/mesa') diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c index 44072fbc50..3343bb2f40 100644 --- a/src/mesa/main/bufferobj.c +++ b/src/mesa/main/bufferobj.c @@ -749,6 +749,7 @@ _mesa_DeleteBuffersARB(GLsizei n, const GLuint *ids) GET_CURRENT_CONTEXT(ctx); GLsizei i; ASSERT_OUTSIDE_BEGIN_END(ctx); + FLUSH_VERTICES(ctx, 0); if (n < 0) { _mesa_error(ctx, GL_INVALID_VALUE, "glDeleteBuffersARB(n)"); diff --git a/src/mesa/main/queryobj.c b/src/mesa/main/queryobj.c index fa35c6ce58..e9cf5f64d0 100644 --- a/src/mesa/main/queryobj.c +++ b/src/mesa/main/queryobj.c @@ -218,6 +218,7 @@ _mesa_DeleteQueriesARB(GLsizei n, const GLuint *ids) GLint i; GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END(ctx); + FLUSH_VERTICES(ctx, 0); if (MESA_VERBOSE & VERBOSE_API) _mesa_debug(ctx, "glDeleeteQueries(%d)\n", n); diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c index 11b0f884fa..6650613d28 100644 --- a/src/mesa/main/shaderapi.c +++ b/src/mesa/main/shaderapi.c @@ -1236,6 +1236,7 @@ _mesa_DeleteObjectARB(GLhandleARB obj) if (obj) { GET_CURRENT_CONTEXT(ctx); + FLUSH_VERTICES(ctx, 0); if (is_program(ctx, obj)) { delete_shader_program(ctx, obj); } @@ -1254,6 +1255,7 @@ _mesa_DeleteProgram(GLuint name) { if (name) { GET_CURRENT_CONTEXT(ctx); + FLUSH_VERTICES(ctx, 0); delete_shader_program(ctx, name); } } @@ -1264,6 +1266,7 @@ _mesa_DeleteShader(GLuint name) { if (name) { GET_CURRENT_CONTEXT(ctx); + FLUSH_VERTICES(ctx, 0); delete_shader(ctx, name); } } -- cgit v1.2.3