summaryrefslogtreecommitdiff
path: root/src/mesa/drivers
diff options
context:
space:
mode:
authorBrian Paul <brian.paul@tungstengraphics.com>2002-08-21 02:57:58 +0000
committerBrian Paul <brian.paul@tungstengraphics.com>2002-08-21 02:57:58 +0000
commit3ac01f5e4780b90659a44b2e8d0834940548ab1f (patch)
tree8a3bed8bec43601bd60d240ea6da6c7acf03bd53 /src/mesa/drivers
parent34713c1a3c140b58b6d582f0ccf49505bce0896f (diff)
fix problems in FXgetImage()
Diffstat (limited to 'src/mesa/drivers')
-rw-r--r--src/mesa/drivers/x11/xm_api.c29
1 files changed, 14 insertions, 15 deletions
diff --git a/src/mesa/drivers/x11/xm_api.c b/src/mesa/drivers/x11/xm_api.c
index 4d74281bf9..cba660af2f 100644
--- a/src/mesa/drivers/x11/xm_api.c
+++ b/src/mesa/drivers/x11/xm_api.c
@@ -1,4 +1,4 @@
-/* $Id: xm_api.c,v 1.40 2002/07/09 01:22:51 brianp Exp $ */
+/* $Id: xm_api.c,v 1.41 2002/08/21 02:57:58 brianp Exp $ */
/*
* Mesa 3-D graphics library
@@ -2234,8 +2234,6 @@ static void FXgetImage( XMesaBuffer b )
unsigned int bw, depth, width, height;
XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;
- assert(xmesa->xm_draw_buffer->FXctx);
-
#ifdef XFree86Server
x = b->frontbuffer->x;
y = b->frontbuffer->y;
@@ -2243,37 +2241,37 @@ static void FXgetImage( XMesaBuffer b )
height = b->frontbuffer->height;
depth = b->frontbuffer->depth;
#else
- XGetGeometry( xmesa->xm_visual->display, b->frontbuffer,
+ XGetGeometry( b->xm_visual->display, b->frontbuffer,
&root, &xpos, &ypos, &width, &height, &bw, &depth);
#endif
if (b->width != width || b->height != height) {
- b->width = MIN2((int)width, xmesa->xm_draw_buffer->FXctx->width);
- b->height = MIN2((int)height, xmesa->xm_draw_buffer->FXctx->height);
+ b->width = MIN2((int)width, b->FXctx->width);
+ b->height = MIN2((int)height, b->FXctx->height);
if (b->width & 1)
b->width--; /* prevent odd width */
xmesa_alloc_back_buffer( b );
}
grLfbWriteColorFormat(GR_COLORFORMAT_ARGB);
- if (xmesa->xm_visual->undithered_pf==PF_5R6G5B) {
+ if (b->xm_visual->undithered_pf==PF_5R6G5B) {
/* Special case: 16bpp RGB */
grLfbReadRegion( GR_BUFFER_FRONTBUFFER, /* src buffer */
- 0, xmesa->xm_draw_buffer->FXctx->height - b->height, /*pos*/
+ 0, b->FXctx->height - b->height, /*pos*/
b->width, b->height, /* size */
b->width * sizeof(GLushort), /* stride */
b->backimage->data); /* dest buffer */
}
- else if (xmesa->xm_visual->dithered_pf==PF_DITHER
- && GET_VISUAL_DEPTH(xmesa->xm_visual)==8) {
+ else if (b->xm_visual->dithered_pf==PF_DITHER
+ && GET_VISUAL_DEPTH(b->xm_visual)==8) {
/* Special case: 8bpp RGB */
for (y=0;y<b->height;y++) {
- GLubyte *ptr = (GLubyte*) xmesa->xm_draw_buffer->backimage->data
- + xmesa->xm_draw_buffer->backimage->bytes_per_line * y;
+ GLubyte *ptr = (GLubyte*) b->backimage->data
+ + b->backimage->bytes_per_line * y;
XDITHER_SETUP(y);
/* read row from 3Dfx frame buffer */
grLfbReadRegion( GR_BUFFER_FRONTBUFFER,
- 0, xmesa->xm_draw_buffer->FXctx->height-(b->height-y),
+ 0, b->FXctx->height-(b->height-y),
b->width, 1,
0,
pixbuf );
@@ -2292,7 +2290,7 @@ static void FXgetImage( XMesaBuffer b )
for (y=0;y<b->height;y++) {
/* read row from 3Dfx frame buffer */
grLfbReadRegion( GR_BUFFER_FRONTBUFFER,
- 0, xmesa->xm_draw_buffer->FXctx->height-(b->height-y),
+ 0, b->FXctx->height-(b->height-y),
b->width, 1,
0,
pixbuf );
@@ -2304,7 +2302,8 @@ static void FXgetImage( XMesaBuffer b )
(pixbuf[x] & 0xf800) >> 8,
(pixbuf[x] & 0x07e0) >> 3,
(pixbuf[x] & 0x001f) << 3,
- 0xff, xmesa->pixelformat));
+ 0xff,
+ b->xm_visual->undithered_pf));
}
}
}