diff --git a/glamor/glamor_copyarea.c b/glamor/glamor_copyarea.c index ae3264dd2..0b170dc79 100644 --- a/glamor/glamor_copyarea.c +++ b/glamor/glamor_copyarea.c @@ -571,10 +571,12 @@ _glamor_copy_n_to_n(DrawablePtr src, glamor_get_drawable_location(dst)); if (glamor_prepare_access(dst, GLAMOR_ACCESS_RW) && - glamor_prepare_access(src, GLAMOR_ACCESS_RO)) { + glamor_prepare_access(src, GLAMOR_ACCESS_RO) && + glamor_prepare_access_gc(gc)) { fbCopyNtoN(src, dst, gc, box, nbox, dx, dy, reverse, upsidedown, bitplane, closure); } + glamor_finish_access_gc(gc); glamor_finish_access(src); glamor_finish_access(dst); ok = TRUE; diff --git a/glamor/glamor_copyplane.c b/glamor/glamor_copyplane.c index 50e9cf303..2bd2de30d 100644 --- a/glamor/glamor_copyplane.c +++ b/glamor/glamor_copyplane.c @@ -39,10 +39,12 @@ _glamor_copy_plane(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC, goto fail; if (glamor_prepare_access(pDst, GLAMOR_ACCESS_RW) && - glamor_prepare_access(pSrc, GLAMOR_ACCESS_RO)) { + glamor_prepare_access(pSrc, GLAMOR_ACCESS_RO) && + glamor_prepare_access_gc(pGC)) { *pRegion = fbCopyPlane(pSrc, pDst, pGC, srcx, srcy, w, h, dstx, dsty, bitPlane); } + glamor_finish_access_gc(pGC); glamor_finish_access(pSrc); glamor_finish_access(pDst); return TRUE; diff --git a/glamor/glamor_putimage.c b/glamor/glamor_putimage.c index a4f97cdf7..b77238cfb 100644 --- a/glamor/glamor_putimage.c +++ b/glamor/glamor_putimage.c @@ -227,9 +227,11 @@ glamor_put_image_xybitmap(DrawablePtr drawable, GCPtr gc, glamor_fallback(": to %p (%c)\n", drawable, glamor_get_drawable_location(drawable)); fail: - if (glamor_prepare_access(drawable, GLAMOR_ACCESS_RW)) { + if (glamor_prepare_access(drawable, GLAMOR_ACCESS_RW)) && + glamor_prepare_access_gc(gc)) { fbPutImage(drawable, gc, 1, x, y, w, h, left_pad, XYBitmap, bits); } + glamor_finish_access_gc(gc); glamor_finish_access(drawable); } #endif diff --git a/glamor/glamor_setspans.c b/glamor/glamor_setspans.c index 664f8acc4..ced302a50 100644 --- a/glamor/glamor_setspans.c +++ b/glamor/glamor_setspans.c @@ -86,9 +86,11 @@ _glamor_set_spans(DrawablePtr drawable, GCPtr gc, char *src, glamor_fallback("to %p (%c)\n", drawable, glamor_get_drawable_location(drawable)); - if (glamor_prepare_access(drawable, GLAMOR_ACCESS_RW)) { + if (glamor_prepare_access(drawable, GLAMOR_ACCESS_RW) && + glamor_prepare_access_gc(gc)) { fbSetSpans(drawable, gc, src, points, widths, numPoints, sorted); } + glamor_finish_access_gc(gc); glamor_finish_access(drawable); ret = TRUE;