diff options
| author | emersion <contact@emersion.fr> | 2018-04-25 08:33:41 +0100 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-04-25 08:33:41 +0100 | 
| commit | 99e9f08c4add8f0d77c94d1b37daaec25809cf26 (patch) | |
| tree | 240bcac75264906411ef9f454dced46f71702649 | |
| parent | c40f86d27f611a2b34cead63e63c12d6a18263eb (diff) | |
| parent | 018b82c01e642aae45dace95c5aae5d489e98853 (diff) | |
| download | wlroots-99e9f08c4add8f0d77c94d1b37daaec25809cf26.tar.xz | |
Merge pull request #903 from emersion/wlr-egl-destroy-surface
render/egl: add wlr_egl_destroy_surface
| -rw-r--r-- | backend/drm/renderer.c | 8 | ||||
| -rw-r--r-- | backend/headless/output.c | 6 | ||||
| -rw-r--r-- | backend/wayland/output.c | 2 | ||||
| -rw-r--r-- | backend/x11/output.c | 2 | ||||
| -rw-r--r-- | examples/layer-shell.c | 7 | ||||
| -rw-r--r-- | include/wlr/render/egl.h | 2 | ||||
| -rw-r--r-- | render/egl.c | 14 | ||||
| -rw-r--r-- | render/gles2/texture.c | 5 | 
8 files changed, 23 insertions, 23 deletions
| diff --git a/backend/drm/renderer.c b/backend/drm/renderer.c index f06de1ee..ea46a5e9 100644 --- a/backend/drm/renderer.c +++ b/backend/drm/renderer.c @@ -79,9 +79,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,  		format, GBM_BO_USE_RENDERING | flags); @@ -117,9 +115,7 @@ void wlr_drm_surface_finish(struct wlr_drm_surface *surf) {  		gbm_surface_release_buffer(surf->gbm, surf->back);  	} -	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..f71b4cdb 100644 --- a/backend/headless/output.c +++ b/backend/headless/output.c @@ -29,9 +29,7 @@ static bool output_set_custom_mode(struct wlr_output *wlr_output, int32_t width,  		refresh = HEADLESS_DEFAULT_REFRESH;  	} -	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);  	if (output->egl_surface == EGL_NO_SURFACE) { @@ -73,7 +71,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..4d837138 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); +bool wlr_egl_destroy_surface(struct wlr_egl *egl, EGLSurface surface); +  #endif diff --git a/render/egl.c b/render/egl.c index b52682ea..95bdef55 100644 --- a/render/egl.c +++ b/render/egl.c @@ -225,9 +225,10 @@ bool wlr_egl_destroy_image(struct wlr_egl *egl, EGLImage image) {  	if (!eglDestroyImageKHR) {  		return false;  	} - -	eglDestroyImageKHR(egl->display, image); -	return true; +	if (!image) { +		return true; +	} +	return eglDestroyImageKHR(egl->display, image);  }  EGLSurface wlr_egl_create_surface(struct wlr_egl *egl, void *window) { @@ -499,3 +500,10 @@ int wlr_egl_get_dmabuf_modifiers(struct wlr_egl *egl,  	}  	return num;  } + +bool wlr_egl_destroy_surface(struct wlr_egl *egl, EGLSurface surface) { +	if (!surface) { +		return true; +	} +	return eglDestroySurface(egl->display, surface); +} diff --git a/render/gles2/texture.c b/render/gles2/texture.c index 45169daf..45425fbf 100644 --- a/render/gles2/texture.c +++ b/render/gles2/texture.c @@ -88,10 +88,7 @@ static void gles2_texture_destroy(struct wlr_texture *wlr_texture) {  	if (texture->image_tex) {  		glDeleteTextures(1, &texture->image_tex);  	} -	if (texture->image) { -		assert(eglDestroyImageKHR); -		wlr_egl_destroy_image(texture->egl, texture->image); -	} +	wlr_egl_destroy_image(texture->egl, texture->image);  	if (texture->type == WLR_GLES2_TEXTURE_GLTEX) {  		glDeleteTextures(1, &texture->gl_tex); | 
