mesa: use new _mesa_inside_dlist_begin_end() function

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
Brian Paul 2013-04-23 10:57:45 -06:00
parent 976b529b7c
commit f74da3e988
3 changed files with 14 additions and 4 deletions

View 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.

View 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 {

View 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;