Removed the xm_context field from XMesaBuffer. It was preventing N threads

from rendering into one window in parallel and wasn't really needed anyway.
This commit is contained in:
Brian Paul 2002-03-12 21:55:50 +00:00
parent 5033f21d05
commit 1d01794e6e
2 changed files with 7 additions and 65 deletions

View File

@ -1,4 +1,4 @@
/* $Id: xm_api.c,v 1.33 2002/03/01 04:28:32 brianp Exp $ */
/* $Id: xm_api.c,v 1.34 2002/03/12 21:55:50 brianp Exp $ */
/*
* Mesa 3-D graphics library
@ -1700,35 +1700,6 @@ void XMesaDestroyContext( XMesaContext c )
_mesa_destroy_context( c->gl_ctx );
}
/*
* XXX This code should really go away because the ancilliary data
* associated with a window/pixmap should not go away just because
* a context is destroyed.
*/
#if 0
/* Destroy any buffers which are using this context. If we don't
* we may have dangling references. Hmm, maybe we should just
* set the buffer's context pointer to NULL instead of deleting it?
* Let's see if we get any bug reports...
* This contributed by Doug Rabson <dfr@calcaphon.com>
*/
{
XMesaBuffer b, next;
for (b = XMesaBufferList; b; b = next) {
next = b->Next;
if (!b->pixmap_flag) {
#ifndef XFree86Server
XSync(b->display, False);
#endif
if (b->xm_context == c) {
/* found a context created for this context */
XMesaDestroyBuffer( b );
}
}
}
}
#endif
FREE( c );
}
@ -1779,8 +1750,6 @@ XMesaBuffer XMesaCreateWindowBuffer2( XMesaVisual v, XMesaWindow w,
return NULL;
}
b->xm_context = NULL; /* Associate no context with this buffer */
b->xm_visual = v;
b->pixmap_flag = GL_FALSE;
b->display = v->display;
@ -1927,8 +1896,6 @@ XMesaBuffer XMesaCreatePixmapBuffer( XMesaVisual v,
assert(v);
b->xm_context = NULL; /* Associate no context with this buffer */
b->xm_visual = v;
b->pixmap_flag = GL_TRUE;
b->display = v->display;
@ -1977,8 +1944,6 @@ XMesaBuffer XMesaCreatePBuffer( XMesaVisual v, XMesaColormap cmap,
return NULL;
}
b->xm_context = NULL; /* Associate no context with this buffer */
b->xm_visual = v;
b->pbuffer_flag = GL_TRUE;
b->display = v->display;
@ -2059,9 +2024,6 @@ void XMesaDestroyBuffer( XMesaBuffer b )
XMesaDestroyImage( b->rowimage );
}
if (b->xm_context)
b->xm_context->xm_buffer = NULL;
free_xmesa_buffer(client, b);
}
@ -2090,17 +2052,6 @@ GLboolean XMesaMakeCurrent2( XMesaContext c, XMesaBuffer drawBuffer,
if (drawBuffer->FXctx) {
fxMesaMakeCurrent(drawBuffer->FXctx);
/* Disassociate drawBuffer's current context from drawBuffer */
if (drawBuffer->xm_context)
drawBuffer->xm_context->xm_buffer = NULL;
/* Disassociate old buffer from this context */
if (c->xm_buffer)
c->xm_buffer->xm_context = NULL;
/* Associate the context with this buffer */
drawBuffer->xm_context = c;
c->xm_buffer = drawBuffer;
c->xm_read_buffer = readBuffer;
c->use_read_buffer = (drawBuffer != readBuffer);
@ -2116,16 +2067,6 @@ GLboolean XMesaMakeCurrent2( XMesaContext c, XMesaBuffer drawBuffer,
return GL_TRUE;
}
/* Disassociate drawBuffer's current context from drawBuffer */
if (drawBuffer->xm_context)
drawBuffer->xm_context->xm_buffer = NULL;
/* Disassociate old buffer with this context */
if (c->xm_buffer)
c->xm_buffer->xm_context = NULL;
drawBuffer->xm_context = c; /* Associate the context with this buffer */
c->xm_buffer = drawBuffer;
c->xm_read_buffer = readBuffer;
c->use_read_buffer = (drawBuffer != readBuffer);
@ -2290,12 +2231,13 @@ GLboolean XMesaSetFXmode( GLint mode )
*/
static void FXgetImage( XMesaBuffer b )
{
GET_CURRENT_CONTEXT(ctx);
static unsigned short pixbuf[MAX_WIDTH];
GLuint x, y;
int xpos, ypos;
XMesaWindow root;
unsigned int bw, depth, width, height;
XMesaContext xmesa = (XMesaContext) b->xm_context->gl_ctx->DriverCtx;
XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;
assert(xmesa->xm_buffer->FXctx);
@ -2387,8 +2329,9 @@ void XMesaSwapBuffers( XMesaBuffer b )
/* If we're swapping the buffer associated with the current context
* we have to flush any pending rendering commands first.
*/
if (b->xm_context && b->xm_context->gl_ctx == ctx)
if (ctx && ctx->DrawBuffer == &(b->mesa_buffer)) {
_mesa_swapbuffers(ctx);
}
if (b->db_state) {
#ifdef FX
@ -2453,7 +2396,7 @@ void XMesaCopySubBuffer( XMesaBuffer b, int x, int y, int width, int height )
/* If we're swapping the buffer associated with the current context
* we have to flush any pending rendering commands first.
*/
if (b->xm_context->gl_ctx == ctx)
if (ctx && ctx->DrawBuffer == &(b->mesa_buffer))
_mesa_swapbuffers(ctx);
if (b->db_state) {

View File

@ -1,4 +1,4 @@
/* $Id: xmesaP.h,v 1.25 2002/02/15 19:15:33 brianp Exp $ */
/* $Id: xmesaP.h,v 1.26 2002/03/12 21:55:50 brianp Exp $ */
/*
* Mesa 3-D graphics library
@ -144,7 +144,6 @@ struct xmesa_buffer {
GLboolean wasCurrent; /* was ever the current buffer? */
XMesaVisual xm_visual; /* the X/Mesa visual */
XMesaContext xm_context; /* the context associated with this buffer */
XMesaDisplay *display;
GLboolean pixmap_flag; /* is the buffer a Pixmap? */
GLboolean pbuffer_flag; /* is the buffer a Pbuffer? */