summaryrefslogtreecommitdiff
path: root/glx/glxdriswrast.c
diff options
context:
space:
mode:
Diffstat (limited to 'glx/glxdriswrast.c')
-rw-r--r--glx/glxdriswrast.c33
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);