mesa: fix incorrect error handling in glBufferDataARB()
authorBrian Paul <brianp@vmware.com>
Fri, 27 Feb 2009 19:30:21 +0000 (12:30 -0700)
committerBrian Paul <brianp@vmware.com>
Fri, 27 Feb 2009 19:56:07 +0000 (12:56 -0700)
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.

src/mesa/main/bufferobj.c

index 016543da01f2b6cb09dda538ffcc0392a498e30d..e4bdc6f1e79d728ecaf51d066e5f66abdf5637dc 100644 (file)
@@ -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);