Revert "glx/dri: Fix DRI drawable release at MakeCurrent time"
authorMartin Roukala (né Peres) <martin.roukala@mupuf.org>
Thu, 24 Nov 2022 09:55:45 +0000 (11:55 +0200)
committerMarge Bot <emma+marge@anholt.net>
Fri, 25 Nov 2022 20:08:45 +0000 (20:08 +0000)
This reverts commit 31b04e420b0eb080084c6323066ea0b83929d59e which
is also breaking KDE in some ways.

Fixes: #7674
Acked-by: Michel Dänzer <mdaenzer@redhat.com>
Acked-by: Tapani Pälli <tapani.palli@intel.com>
Acked-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Martin Roukala (né Peres) <martin.roukala@mupuf.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19972>

src/glx/dri2_glx.c
src/glx/dri3_glx.c
src/glx/dri_common.c
src/glx/drisw_glx.c
src/glx/driwindows_glx.c

index eb49ac5..1ce4783 100644 (file)
@@ -121,7 +121,7 @@ dri2_bind_context(struct glx_context *context, struct glx_context *old,
    pdraw = (struct dri2_drawable *) driFetchDrawable(context, draw);
    pread = (struct dri2_drawable *) driFetchDrawable(context, read);
 
-   driReleaseDrawables(old);
+   driReleaseDrawables(context);
 
    if (pdraw)
       dri_draw = pdraw->driDrawable;
index abec1ce..e8996dd 100644 (file)
@@ -192,7 +192,7 @@ dri3_bind_context(struct glx_context *context, struct glx_context *old,
    pdraw = (struct dri3_drawable *) driFetchDrawable(context, draw);
    pread = (struct dri3_drawable *) driFetchDrawable(context, read);
 
-   driReleaseDrawables(old);
+   driReleaseDrawables(context);
 
    if (pdraw)
       dri_draw = pdraw->loader_drawable.dri_drawable;
index bf14c91..94e264c 100644 (file)
@@ -490,7 +490,7 @@ releaseDrawable(const struct glx_display *priv, GLXDrawable drawable)
 _X_HIDDEN void
 driReleaseDrawables(struct glx_context *gc)
 {
-   const struct glx_display *priv = (gc && gc->psc) ? gc->psc->display : NULL;
+   const struct glx_display *priv = gc->psc->display;
 
    if (priv == NULL)
       return;
index a459ec8..e90f4ef 100644 (file)
@@ -440,7 +440,7 @@ drisw_bind_context(struct glx_context *context, struct glx_context *old,
    pdraw = (struct drisw_drawable *) driFetchDrawable(context, draw);
    pread = (struct drisw_drawable *) driFetchDrawable(context, read);
 
-   driReleaseDrawables(old);
+   driReleaseDrawables(context);
 
    if (!psc->core->bindContext(context->driContext,
                                pdraw ? pdraw->driDrawable : NULL,
index 8c21c5e..3eb961d 100644 (file)
@@ -88,7 +88,7 @@ driwindows_bind_context(struct glx_context *context, struct glx_context *old,
    pdraw = (struct driwindows_drawable *) driFetchDrawable(context, draw);
    pread = (struct driwindows_drawable *) driFetchDrawable(context, read);
 
-   driReleaseDrawables(old);
+   driReleaseDrawables(&pcp->base);
 
    if (pdraw == NULL || pread == NULL)
       return GLXBadDrawable;