diff --git a/.pick_status.json b/.pick_status.json index c88e07236a8..a9dd479b1fb 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1147,7 +1147,7 @@ "description": "Revert \"glx/dri: Fix DRI drawable release at MakeCurrent time\"", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "31b04e420b0eb080084c6323066ea0b83929d59e" }, diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c index eb49ac5ea1b..1ce47832c62 100644 --- a/src/glx/dri2_glx.c +++ b/src/glx/dri2_glx.c @@ -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; diff --git a/src/glx/dri3_glx.c b/src/glx/dri3_glx.c index abec1ce6baf..e8996dd5e27 100644 --- a/src/glx/dri3_glx.c +++ b/src/glx/dri3_glx.c @@ -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; diff --git a/src/glx/dri_common.c b/src/glx/dri_common.c index bf14c919bf6..94e264cc07f 100644 --- a/src/glx/dri_common.c +++ b/src/glx/dri_common.c @@ -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; diff --git a/src/glx/drisw_glx.c b/src/glx/drisw_glx.c index 67a2edfd206..9a99d3e037f 100644 --- a/src/glx/drisw_glx.c +++ b/src/glx/drisw_glx.c @@ -436,7 +436,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, diff --git a/src/glx/driwindows_glx.c b/src/glx/driwindows_glx.c index 8c21c5ee58a..3eb961dae3d 100644 --- a/src/glx/driwindows_glx.c +++ b/src/glx/driwindows_glx.c @@ -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;