Don't pass x/y/width/height to ctx->Driver.Accum().

Compute the region after we've locked (and possibly updated the buffer's size).
Same thing is needed for ctx->Driver.Clear().
This commit is contained in:
Brian Paul 2006-10-18 18:35:09 +00:00
parent 4e4c0bbef7
commit ccb64bbb2a
4 changed files with 14 additions and 15 deletions

View file

@ -94,11 +94,7 @@ _mesa_Accum( GLenum op, GLfloat value )
}
if (ctx->RenderMode == GL_RENDER) {
GLint x = ctx->DrawBuffer->_Xmin;
GLint y = ctx->DrawBuffer->_Ymin;
GLint width = ctx->DrawBuffer->_Xmax - ctx->DrawBuffer->_Xmin;
GLint height = ctx->DrawBuffer->_Ymax - ctx->DrawBuffer->_Ymin;
ctx->Driver.Accum(ctx, op, value, x, y, width, height);
ctx->Driver.Accum(ctx, op, value);
}
}

View file

@ -118,10 +118,9 @@ struct dd_function_table {
*/
/*@{*/
/**
* Execute glAccum command within the given scissor region.
* Execute glAccum command.
*/
void (*Accum)( GLcontext *ctx, GLenum op, GLfloat value,
GLint xpos, GLint ypos, GLint width, GLint height );
void (*Accum)( GLcontext *ctx, GLenum op, GLfloat value );
/*@}*/

View file

@ -541,12 +541,10 @@ accum_return(GLcontext *ctx, GLfloat value,
* Software fallback for glAccum.
*/
void
_swrast_Accum( GLcontext *ctx, GLenum op, GLfloat value,
GLint xpos, GLint ypos,
GLint width, GLint height )
_swrast_Accum(GLcontext *ctx, GLenum op, GLfloat value)
{
SWcontext *swrast = SWRAST_CONTEXT(ctx);
GLint xpos, ypos, width, height;
if (SWRAST_CONTEXT(ctx)->NewState)
_swrast_validate_derived( ctx );
@ -558,6 +556,14 @@ _swrast_Accum( GLcontext *ctx, GLenum op, GLfloat value,
RENDER_START(swrast, ctx);
/* Compute region after calling RENDER_START so that we know the
* drawbuffer's size/bounds are up to date.
*/
xpos = ctx->DrawBuffer->_Xmin;
ypos = ctx->DrawBuffer->_Ymin;
width = ctx->DrawBuffer->_Xmax - ctx->DrawBuffer->_Xmin;
height = ctx->DrawBuffer->_Ymax - ctx->DrawBuffer->_Ymin;
switch (op) {
case GL_ADD:
if (value != 0.0F) {

View file

@ -134,9 +134,7 @@ _swrast_Clear( GLcontext *ctx, GLbitfield mask, GLboolean all,
GLint x, GLint y, GLint width, GLint height );
extern void
_swrast_Accum( GLcontext *ctx, GLenum op,
GLfloat value, GLint xpos, GLint ypos,
GLint width, GLint height );
_swrast_Accum(GLcontext *ctx, GLenum op, GLfloat value);