vbo: fix error detection in vbo_save_playback_vertex_list()
authorBrian Paul <brianp@vmware.com>
Thu, 2 May 2013 01:15:32 +0000 (19:15 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 2 May 2013 15:03:15 +0000 (09:03 -0600)
The old code didn't make sense.  The clause in question did the
same thing as the next else-if clause.  If we're already executing
a glBegin/End pair and we're starting a new primitive, that's an
error.

Fixes more failures in piglit gl-1.0-beginend-coverage test.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
src/mesa/vbo/vbo_save_draw.c

index bc0e13dfa17123cc959682539cfcb4b92d919eea..a6ce379e20aa218c2a53a0a3a301b806f15d03e6 100644 (file)
@@ -269,17 +269,12 @@ vbo_save_playback_vertex_list(struct gl_context *ctx, void *data)
 
    if (node->prim_count > 0) {
 
-      if (_mesa_inside_begin_end(ctx) &&
-         node->prim[0].begin) {
-
-        /* Degenerate case: list is called inside begin/end pair and
-         * includes operations such as glBegin or glDrawArrays.
-         */
-        if (0)
-           printf("displaylist recursive begin");
-
-        vbo_save_loopback_vertex_list( ctx, node );
-
+      if (_mesa_inside_begin_end(ctx) && node->prim[0].begin) {
+         /* Error: we're about to begin a new primitive but we're already
+          * inside a glBegin/End pair.
+          */
+         _mesa_error(ctx, GL_INVALID_OPERATION,
+                     "draw operation inside glBegin/End");
          goto end;
       }
       else if (save->replay_flags) {