st/mesa: fix unsigned/signed breakage in scissor
authorXavier Chantry <chantry.xavier@gmail.com>
Sat, 23 Jan 2010 16:27:21 +0000 (17:27 +0100)
committerBrian Paul <brianp@vmware.com>
Sun, 24 Jan 2010 23:45:49 +0000 (16:45 -0700)
commit 53174afeeb introduced a portability change that converted GLint x,y
to GLuint. That breaks when x and y are negative, which seems to be allowed,
and which at least one game uses : teeworlds.

Rather than simply reverting the change, it seems possible to convert the
16bit unsigned to GLint so that comparisons are made between signed integers
instead.  This hopefully does not break anything while keeping MSVC happy.

Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com>
Signed-off-by: Brian Paul <brianp@vmware.com>
src/mesa/state_tracker/st_atom_scissor.c

index 3fd59e1945c2677b2de1cf8bbc3fd3388c7f50a8..fb666b8546fb75fff71c8345d80438b147029f50 100644 (file)
@@ -52,14 +52,14 @@ update_scissor( struct st_context *st )
    scissor.maxy = fb->Height;
 
    if (st->ctx->Scissor.Enabled) {
-      if ((GLuint)st->ctx->Scissor.X > scissor.minx)
+      if (st->ctx->Scissor.X > (GLint)scissor.minx)
          scissor.minx = st->ctx->Scissor.X;
-      if ((GLuint)st->ctx->Scissor.Y > scissor.miny)
+      if (st->ctx->Scissor.Y > (GLint)scissor.miny)
          scissor.miny = st->ctx->Scissor.Y;
 
-      if ((GLuint)st->ctx->Scissor.X + st->ctx->Scissor.Width < scissor.maxx)
+      if (st->ctx->Scissor.X + st->ctx->Scissor.Width < (GLint)scissor.maxx)
          scissor.maxx = st->ctx->Scissor.X + st->ctx->Scissor.Width;
-      if ((GLuint)st->ctx->Scissor.Y + st->ctx->Scissor.Height < scissor.maxy)
+      if (st->ctx->Scissor.Y + st->ctx->Scissor.Height < (GLint)scissor.maxy)
          scissor.maxy = st->ctx->Scissor.Y + st->ctx->Scissor.Height;
 
       /* check for null space */