diff options
author | Brian Paul <[email protected]> | 2009-02-27 12:30:21 -0700 |
---|---|---|
committer | Brian Paul <[email protected]> | 2009-02-27 12:56:07 -0700 |
commit | 75e3ccf6a5b639834bcda0ff6f9035b148fca8f1 (patch) | |
tree | fea435601677fcca3f07af5269b9f87d2853f402 /src/mesa/main/bufferobj.c | |
parent | 40290745ea645b52d30f866abfe25ac5d58a755c (diff) |
mesa: fix incorrect error handling in glBufferDataARB()
If glBufferDataARB() is called while a buffer object is currently mapped
we're supposed to unmap the current buffer, then replace it. Don't generate
an error.
Diffstat (limited to 'src/mesa/main/bufferobj.c')
-rw-r--r-- | src/mesa/main/bufferobj.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c index 016543da01f..e4bdc6f1e79 100644 --- a/src/mesa/main/bufferobj.c +++ b/src/mesa/main/bufferobj.c @@ -951,8 +951,10 @@ _mesa_BufferDataARB(GLenum target, GLsizeiptrARB size, } if (bufObj->Pointer) { - _mesa_error(ctx, GL_INVALID_OPERATION, "glBufferDataARB(buffer is mapped)" ); - return; + /* Unmap the existing buffer. We'll replace it now. Not an error. */ + ctx->Driver.UnmapBuffer(ctx, target, bufObj); + bufObj->Access = DEFAULT_ACCESS; + bufObj->Pointer = NULL; } ASSERT(ctx->Driver.BufferData); |