mesa: use new _mesa_inside_dlist_begin_end() function
authorBrian Paul <brianp@vmware.com>
Tue, 23 Apr 2013 16:57:45 +0000 (10:57 -0600)
committerBrian Paul <brianp@vmware.com>
Wed, 24 Apr 2013 03:09:17 +0000 (21:09 -0600)
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/main/context.h
src/mesa/main/dlist.c
src/mesa/vbo/vbo_save_api.c

index 05251849b575156761b2fbf853724e7bb3f3b8e0..396cbd2d63dbbf5a6d0e50d990337fb361d201c9 100644 (file)
@@ -200,6 +200,17 @@ _mesa_inside_begin_end(const struct gl_context *ctx)
 }
 
 
+/**
+ * Are we currently between glBegin and glEnd in a display list?
+ */
+static inline GLboolean
+_mesa_inside_dlist_begin_end(const struct gl_context *ctx)
+{
+   return ctx->Driver.CurrentSavePrimitive != PRIM_OUTSIDE_BEGIN_END;
+}
+
+
+
 /**
  * \name Macros for flushing buffered rendering commands before state changes,
  * checking if inside glBegin/glEnd, etc.
index 33aeffcfb55d9e30f01abb0baa34c8a43500c61e..89af17c1e9e35b62a43e8e2374a3b56d435ef935 100644 (file)
@@ -3777,7 +3777,7 @@ save_ShadeModel(GLenum mode)
 
    /* Only save the value if we know the statechange will take effect:
     */
-   if (ctx->Driver.CurrentSavePrimitive == PRIM_OUTSIDE_BEGIN_END)
+   if (!_mesa_inside_dlist_begin_end(ctx))
       ctx->ListState.Current.ShadeModel = mode;
 
    n = alloc_instruction(ctx, OPCODE_SHADE_MODEL, 1);
@@ -5657,7 +5657,7 @@ save_Begin(GLenum mode)
        */
       ctx->Driver.CurrentSavePrimitive = PRIM_INSIDE_UNKNOWN_PRIM;
    }
-   else if (ctx->Driver.CurrentSavePrimitive == PRIM_OUTSIDE_BEGIN_END) {
+   else if (!_mesa_inside_dlist_begin_end(ctx)) {
       ctx->Driver.CurrentSavePrimitive = mode;
    }
    else {
index 6e833d5062c4c2ce4418546ea9dd266e0b8c35d1..7ede8f4b7cb4a7bc19379582dca7efe25cfabb51 100644 (file)
@@ -1558,8 +1558,7 @@ vbo_save_EndList(struct gl_context *ctx)
 
    /* EndList called inside a (saved) Begin/End pair?
     */
-   if (ctx->Driver.CurrentSavePrimitive != PRIM_OUTSIDE_BEGIN_END) {
-
+   if (_mesa_inside_dlist_begin_end(ctx)) {
       if (save->prim_count > 0) {
          GLint i = save->prim_count - 1;
          ctx->Driver.CurrentSavePrimitive = PRIM_OUTSIDE_BEGIN_END;