diff --git a/backend/drm/renderer.c b/backend/drm/renderer.c index f06de1ee..208d50fa 100644 --- a/backend/drm/renderer.c +++ b/backend/drm/renderer.c @@ -80,7 +80,7 @@ bool wlr_drm_surface_init(struct wlr_drm_surface *surf, gbm_surface_destroy(surf->gbm); } if (surf->egl) { - eglDestroySurface(surf->renderer->egl.display, surf->egl); + wlr_egl_destroy_surface(&surf->renderer->egl, surf->egl); } surf->gbm = gbm_surface_create(renderer->gbm, width, height, @@ -118,7 +118,7 @@ void wlr_drm_surface_finish(struct wlr_drm_surface *surf) { } if (surf->egl) { - eglDestroySurface(surf->renderer->egl.display, surf->egl); + wlr_egl_destroy_surface(&surf->renderer->egl, surf->egl); } if (surf->gbm) { gbm_surface_destroy(surf->gbm); diff --git a/backend/headless/output.c b/backend/headless/output.c index 9c479cde..4b748dbf 100644 --- a/backend/headless/output.c +++ b/backend/headless/output.c @@ -30,7 +30,7 @@ static bool output_set_custom_mode(struct wlr_output *wlr_output, int32_t width, } if (output->egl_surface) { - eglDestroySurface(backend->egl.display, output->egl_surface); + wlr_egl_destroy_surface(&backend->egl, output->egl_surface); } output->egl_surface = egl_create_surface(&backend->egl, width, height); @@ -73,7 +73,7 @@ static void output_destroy(struct wlr_output *wlr_output) { wl_event_source_remove(output->frame_timer); - eglDestroySurface(output->backend->egl.display, output->egl_surface); + wlr_egl_destroy_surface(&output->backend->egl, output->egl_surface); free(output); } diff --git a/backend/wayland/output.c b/backend/wayland/output.c index c1fa638a..9391f07f 100644 --- a/backend/wayland/output.c +++ b/backend/wayland/output.c @@ -184,7 +184,7 @@ static void wlr_wl_output_destroy(struct wlr_output *wlr_output) { wl_callback_destroy(output->frame_callback); } - eglDestroySurface(output->backend->egl.display, output->surface); + wlr_egl_destroy_surface(&output->backend->egl, output->egl_surface); wl_egl_window_destroy(output->egl_window); zxdg_toplevel_v6_destroy(output->xdg_toplevel); zxdg_surface_v6_destroy(output->xdg_surface); diff --git a/backend/x11/output.c b/backend/x11/output.c index df4ff043..77b4fb07 100644 --- a/backend/x11/output.c +++ b/backend/x11/output.c @@ -61,7 +61,7 @@ static void output_destroy(struct wlr_output *wlr_output) { wl_list_remove(&output->link); wl_event_source_remove(output->frame_timer); - eglDestroySurface(x11->egl.display, output->surf); + wlr_egl_destroy_surface(&x11->egl, output->surf); xcb_destroy_window(x11->xcb_conn, output->win); xcb_flush(x11->xcb_conn); free(output); diff --git a/examples/layer-shell.c b/examples/layer-shell.c index d9deb7b0..ec25fe42 100644 --- a/examples/layer-shell.c +++ b/examples/layer-shell.c @@ -188,9 +188,8 @@ static void xdg_popup_configure(void *data, struct xdg_popup *xdg_popup, } } -static void popup_destroy() -{ - eglDestroySurface(egl.display, popup_egl_surface); +static void popup_destroy() { + wlr_egl_destroy_surface(&egl, popup_egl_surface); wl_egl_window_destroy(popup_egl_window); xdg_popup_destroy(popup); wl_surface_destroy(popup_wl_surface); @@ -262,7 +261,7 @@ static void layer_surface_configure(void *data, static void layer_surface_closed(void *data, struct zwlr_layer_surface_v1 *surface) { - eglDestroySurface(egl.display, egl_surface); + wlr_egl_destroy_surface(&egl, egl_surface); wl_egl_window_destroy(egl_window); zwlr_layer_surface_v1_destroy(surface); wl_surface_destroy(wl_surface); diff --git a/include/wlr/render/egl.h b/include/wlr/render/egl.h index 0b7f1dde..57570ef9 100644 --- a/include/wlr/render/egl.h +++ b/include/wlr/render/egl.h @@ -98,4 +98,6 @@ bool wlr_egl_is_current(struct wlr_egl *egl); bool wlr_egl_swap_buffers(struct wlr_egl *egl, EGLSurface surface, pixman_region32_t *damage); +void wlr_egl_destroy_surface(struct wlr_egl *egl, EGLSurface surface); + #endif diff --git a/render/egl.c b/render/egl.c index b52682ea..74ac17fd 100644 --- a/render/egl.c +++ b/render/egl.c @@ -499,3 +499,7 @@ int wlr_egl_get_dmabuf_modifiers(struct wlr_egl *egl, } return num; } + +void wlr_egl_destroy_surface(struct wlr_egl *egl, EGLSurface surface) { + eglDestroySurface(egl->display, surface); +}