From d3bd5f2a7ba83567983c4a53ee6a69c3f8f6b25f Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Mon, 6 Apr 2020 11:43:58 +0200 Subject: [PATCH] backend: reset EGL surface after buffer swap This prevents GL commands to affect a previously current EGL surface after a buffer swap. --- backend/drm/drm.c | 2 ++ backend/headless/output.c | 5 +++++ backend/wayland/output.c | 2 ++ backend/x11/output.c | 2 ++ 4 files changed, 11 insertions(+) diff --git a/backend/drm/drm.c b/backend/drm/drm.c index 47423dcb..3bdb288e 100644 --- a/backend/drm/drm.c +++ b/backend/drm/drm.c @@ -569,6 +569,8 @@ static bool drm_connector_commit(struct wlr_output *output) { } } + wlr_egl_make_current(&drm->renderer.egl, EGL_NO_SURFACE, NULL); + return true; } diff --git a/backend/headless/output.c b/backend/headless/output.c index 326c9605..18847af0 100644 --- a/backend/headless/output.c +++ b/backend/headless/output.c @@ -71,6 +71,9 @@ static bool output_test(struct wlr_output *wlr_output) { } static bool output_commit(struct wlr_output *wlr_output) { + struct wlr_headless_output *output = + headless_output_from_output(wlr_output); + if (!output_test(wlr_output)) { return false; } @@ -89,6 +92,8 @@ static bool output_commit(struct wlr_output *wlr_output) { wlr_output_send_present(wlr_output, NULL); } + wlr_egl_make_current(&output->backend->egl, EGL_NO_SURFACE, NULL); + return true; } diff --git a/backend/wayland/output.c b/backend/wayland/output.c index 59804dcf..ae58b584 100644 --- a/backend/wayland/output.c +++ b/backend/wayland/output.c @@ -297,6 +297,8 @@ static bool output_commit(struct wlr_output *wlr_output) { } } + wlr_egl_make_current(&output->backend->egl, EGL_NO_SURFACE, NULL); + return true; } diff --git a/backend/x11/output.c b/backend/x11/output.c index 6546c23e..4e016afe 100644 --- a/backend/x11/output.c +++ b/backend/x11/output.c @@ -157,6 +157,8 @@ static bool output_commit(struct wlr_output *wlr_output) { wlr_output_send_present(wlr_output, NULL); } + wlr_egl_make_current(&x11->egl, EGL_NO_SURFACE, NULL); + return true; }