diff options
Diffstat (limited to 'src/mesa')
| -rw-r--r-- | src/mesa/main/context.c | 11 | 
1 files changed, 11 insertions, 0 deletions
diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index 21adcf3210..2ad1badac7 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -1495,9 +1495,20 @@ _mesa_make_current( GLcontext *newCtx, GLframebuffer *drawBuffer,            */           if (!newCtx->DrawBuffer || newCtx->DrawBuffer->Name == 0) {              _mesa_reference_framebuffer(&newCtx->DrawBuffer, drawBuffer); +         /* fix up the fb fields - these will end up wrong otherwise +            if the DRIdrawable changes, and someone may rely on them. +          */ +            /* What a mess!?! */ +            int i; +            GLenum buffers[MAX_DRAW_BUFFERS]; +            for(i = 0; i < newCtx->Const.MaxDrawBuffers; i++) { +               buffers[i] = newCtx->Color.DrawBuffer[i]; +            } +            _mesa_drawbuffers(newCtx, newCtx->Const.MaxDrawBuffers, buffers, NULL);           }           if (!newCtx->ReadBuffer || newCtx->ReadBuffer->Name == 0) {              _mesa_reference_framebuffer(&newCtx->ReadBuffer, readBuffer); +            _mesa_ReadBuffer(newCtx->Pixel.ReadBuffer);           }  	 newCtx->NewState |= _NEW_BUFFERS;  | 
