call Driver.SetReadBuffer() in clear_color_buffers() to fix colormasked clear bug
authorBrian Paul <brian.paul@tungstengraphics.com>
Thu, 19 Oct 2000 18:17:19 +0000 (18:17 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Thu, 19 Oct 2000 18:17:19 +0000 (18:17 +0000)
src/mesa/main/buffers.c

index 7db265dff1b57cb6c26d27426064e29a4078b25a..a928adc6126525d71f1ec705b02830da7572b1aa 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: buffers.c,v 1.13 2000/10/17 00:42:02 brianp Exp $ */
+/* $Id: buffers.c,v 1.14 2000/10/19 18:17:19 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -211,15 +211,19 @@ clear_color_buffers(GLcontext *ctx)
       if (bufferBit & ctx->Color.DrawDestMask) {
          if (bufferBit == FRONT_LEFT_BIT) {
             (void) (*ctx->Driver.SetDrawBuffer)( ctx, GL_FRONT_LEFT);
+            (void) (*ctx->Driver.SetReadBuffer)( ctx, ctx->DrawBuffer, GL_FRONT_LEFT);
          }
          else if (bufferBit == FRONT_RIGHT_BIT) {
             (void) (*ctx->Driver.SetDrawBuffer)( ctx, GL_FRONT_RIGHT);
+            (void) (*ctx->Driver.SetReadBuffer)( ctx, ctx->DrawBuffer, GL_FRONT_RIGHT);
          }
          else if (bufferBit == BACK_LEFT_BIT) {
             (void) (*ctx->Driver.SetDrawBuffer)( ctx, GL_BACK_LEFT);
+            (void) (*ctx->Driver.SetReadBuffer)( ctx, ctx->DrawBuffer, GL_BACK_LEFT);
          }
          else {
             (void) (*ctx->Driver.SetDrawBuffer)( ctx, GL_BACK_RIGHT);
+            (void) (*ctx->Driver.SetReadBuffer)( ctx, ctx->DrawBuffer, GL_BACK_RIGHT);
          }
          
          if (colorMask != 0xffffffff) {
@@ -231,8 +235,9 @@ clear_color_buffers(GLcontext *ctx)
       }
    }
 
-   /* restore default dest buffer */
+   /* restore default read/draw buffers */
    (void) (*ctx->Driver.SetDrawBuffer)( ctx, ctx->Color.DriverDrawBuffer );
+   (void) (*ctx->Driver.SetReadBuffer)( ctx, ctx->ReadBuffer, ctx->Pixel.DriverReadBuffer );
 }