From 1d43e729ec94217f3b742be481c753a8eaa65ea3 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Fri, 30 Dec 2005 13:02:27 +0000 Subject: [PATCH] properly notify driver on scissor change in MakeCurrent --- src/mesa/main/buffers.c | 33 ++++++++++++++++++++------------- src/mesa/main/buffers.h | 3 +++ src/mesa/main/context.c | 6 ++++-- 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/src/mesa/main/buffers.c b/src/mesa/main/buffers.c index bfec9b5..89e9203 100644 --- a/src/mesa/main/buffers.c +++ b/src/mesa/main/buffers.c @@ -669,20 +669,9 @@ _mesa_SampleCoverageARB(GLclampf value, GLboolean invert) * change flushes the vertices and notifies the driver via * the dd_function_table::Scissor callback. */ -void GLAPIENTRY -_mesa_Scissor( GLint x, GLint y, GLsizei width, GLsizei height ) +void _mesa_set_scissor( GLcontext *ctx, + GLint x, GLint y, GLsizei width, GLsizei height ) { - GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END(ctx); - - if (width < 0 || height < 0) { - _mesa_error( ctx, GL_INVALID_VALUE, "glScissor" ); - return; - } - - if (MESA_VERBOSE & VERBOSE_API) - _mesa_debug(ctx, "glScissor %d %d %d %d\n", x, y, width, height); - if (x == ctx->Scissor.X && y == ctx->Scissor.Y && width == ctx->Scissor.Width && @@ -700,6 +689,24 @@ _mesa_Scissor( GLint x, GLint y, GLsizei width, GLsizei height ) } +void GLAPIENTRY +_mesa_Scissor( GLint x, GLint y, GLsizei width, GLsizei height ) +{ + GET_CURRENT_CONTEXT(ctx); + ASSERT_OUTSIDE_BEGIN_END(ctx); + + if (width < 0 || height < 0) { + _mesa_error( ctx, GL_INVALID_VALUE, "glScissor" ); + return; + } + + if (MESA_VERBOSE & VERBOSE_API) + _mesa_debug(ctx, "glScissor %d %d %d %d\n", x, y, width, height); + + _mesa_set_scissor(ctx, x, y, width, height); +} + + /**********************************************************************/ /** \name Initialization */ diff --git a/src/mesa/main/buffers.h b/src/mesa/main/buffers.h index b10d680..547fb28 100644 --- a/src/mesa/main/buffers.h +++ b/src/mesa/main/buffers.h @@ -74,5 +74,8 @@ _mesa_init_scissor(GLcontext *ctx); extern void _mesa_init_multisample(GLcontext *ctx); +extern void _mesa_set_scissor( GLcontext *ctx, + GLint x, GLint y, GLsizei width, GLsizei height ); + #endif diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index a506326..4101c9f 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -1611,8 +1611,10 @@ _mesa_make_current( GLcontext *newCtx, GLframebuffer *drawBuffer, /* set initial viewport and scissor size now */ _mesa_set_viewport(newCtx, 0, 0, drawBuffer->Width, drawBuffer->Height); - newCtx->Scissor.Width = drawBuffer->Width; - newCtx->Scissor.Height = drawBuffer->Height; + + _mesa_set_scissor(newCtx, 0, 0, + drawBuffer->Width, + drawBuffer->Height ); } } -- 2.7.4