diff options
Diffstat (limited to 'glx/glxdriswrast.c')
-rw-r--r-- | glx/glxdriswrast.c | 33 |
1 files changed, 5 insertions, 28 deletions
diff --git a/glx/glxdriswrast.c b/glx/glxdriswrast.c index 6b546d8ed..396b68911 100644 --- a/glx/glxdriswrast.c +++ b/glx/glxdriswrast.c @@ -82,9 +82,6 @@ struct __GLXDRIdrawable { __GLXdrawable base; __DRIdrawable *driDrawable; __GLXDRIscreen *screen; - - GCPtr gc; /* scratch GC for span drawing */ - GCPtr swapgc; /* GC for swapping the color buffers */ }; /* white lie */ @@ -98,9 +95,6 @@ __glXDRIdrawableDestroy(__GLXdrawable * drawable) (*core->destroyDrawable) (private->driDrawable); - FreeGC(private->gc, (GContext) 0); - FreeGC(private->swapgc, (GContext) 0); - __glXDrawableRelease(drawable); free(private); @@ -258,8 +252,6 @@ __glXDRIscreenCreateDrawable(ClientPtr client, XID drawId, int type, XID glxDrawId, __GLXconfig * glxConfig) { - XID gcvals[2]; - int status; __GLXDRIscreen *driScreen = (__GLXDRIscreen *) screen; __GLXDRIconfig *config = (__GLXDRIconfig *) glxConfig; __GLXDRIdrawable *private; @@ -279,14 +271,6 @@ __glXDRIscreenCreateDrawable(ClientPtr client, private->base.swapBuffers = __glXDRIdrawableSwapBuffers; private->base.copySubBuffer = __glXDRIdrawableCopySubBuffer; - gcvals[0] = GXcopy; - private->gc = - CreateGC(pDraw, GCFunction, gcvals, &status, (XID) 0, serverClient); - gcvals[1] = FALSE; - private->swapgc = - CreateGC(pDraw, GCFunction | GCGraphicsExposures, gcvals, &status, - (XID) 0, serverClient); - private->driDrawable = (*driScreen->swrast->createNewDrawable) (driScreen->driScreen, config->driConfig, private); @@ -316,20 +300,13 @@ swrastPutImage(__DRIdrawable * draw, int op, GCPtr gc; __GLXcontext *cx = lastGLContext; - switch (op) { - case __DRI_SWRAST_IMAGE_OP_DRAW: - gc = drawable->gc; - break; - case __DRI_SWRAST_IMAGE_OP_SWAP: - gc = drawable->swapgc; - break; - default: - return; + if ((gc = GetScratchGC(pDraw->depth, pDraw->pScreen))) { + ValidateGC(pDraw, gc); + gc->ops->PutImage(pDraw, gc, pDraw->depth, x, y, w, h, 0, ZPixmap, + data); + FreeScratchGC(gc); } - ValidateGC(pDraw, gc); - - gc->ops->PutImage(pDraw, gc, pDraw->depth, x, y, w, h, 0, ZPixmap, data); if (cx != lastGLContext) { lastGLContext = cx; cx->makeCurrent(cx); |