summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/relnotes-6.5.3.html1
-rw-r--r--src/mesa/main/attrib.c17
2 files changed, 16 insertions, 2 deletions
diff --git a/docs/relnotes-6.5.3.html b/docs/relnotes-6.5.3.html
index e25e4809b3..cc3df0893b 100644
--- a/docs/relnotes-6.5.3.html
+++ b/docs/relnotes-6.5.3.html
@@ -29,6 +29,7 @@ TBD
<h2>Bug fixes</h2>
<ul>
<li>Fog was errantly applied when a fragment shader was enabled (bug 9346)
+<li>glPush/PopClientAttrib didn't handle VBO bindings correctly (bug 9445)
</ul>
diff --git a/src/mesa/main/attrib.c b/src/mesa/main/attrib.c
index 9993a0021b..2b1a35f3de 100644
--- a/src/mesa/main/attrib.c
+++ b/src/mesa/main/attrib.c
@@ -1,8 +1,8 @@
/*
* Mesa 3-D graphics library
- * Version: 6.5.2
+ * Version: 6.5.3
*
- * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -1285,6 +1285,12 @@ _mesa_PushClientAttrib(GLbitfield mask)
attr = MALLOC_STRUCT( gl_array_attrib );
obj = MALLOC_STRUCT( gl_array_object );
+#if FEATURE_ARB_vertex_buffer_object
+ /* increment ref counts since we're copying pointers to these objects */
+ ctx->Array.ArrayBufferObj->RefCount++;
+ ctx->Array.ElementArrayBufferObj->RefCount++;
+#endif
+
MEMCPY( attr, &ctx->Array, sizeof(struct gl_array_attrib) );
MEMCPY( obj, ctx->Array.ArrayObj, sizeof(struct gl_array_object) );
@@ -1359,6 +1365,13 @@ _mesa_PopClientAttrib(void)
_mesa_BindVertexArrayAPPLE( data->ArrayObj->Name );
+#if FEATURE_ARB_vertex_buffer_object
+ _mesa_BindBufferARB(GL_ARRAY_BUFFER_ARB,
+ data->ArrayBufferObj->Name);
+ _mesa_BindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB,
+ data->ElementArrayBufferObj->Name);
+#endif
+
MEMCPY( ctx->Array.ArrayObj, data->ArrayObj,
sizeof( struct gl_array_object ) );