diff options
| author | Dominique Martinet <asmadeus@codewreck.org> | 2017-08-14 16:16:20 +0200 | 
|---|---|---|
| committer | Dominique Martinet <asmadeus@codewreck.org> | 2017-08-14 16:22:31 +0200 | 
| commit | 4bbf718e7dca39e2838cce7c07c89faffd73840a (patch) | |
| tree | 900834e7168410f2728ce4a6eb0ddb6116512f9a | |
| parent | ba20d5b3cae29a90b1d66c9d53f295a7c41c932e (diff) | |
| download | wlroots-4bbf718e7dca39e2838cce7c07c89faffd73840a.tar.xz | |
impl->destroy cleanup:
 - remove trivial destroy() function
 - make sure we check impl and impl->destroy before calling
 - always call free if not implemented
| -rw-r--r-- | backend/backend.c | 4 | ||||
| -rw-r--r-- | backend/wayland/output.c | 2 | ||||
| -rw-r--r-- | render/gles2/renderer.c | 5 | ||||
| -rw-r--r-- | render/wlr_renderer.c | 4 | ||||
| -rw-r--r-- | render/wlr_texture.c | 4 | ||||
| -rw-r--r-- | types/wlr_output.c | 2 | 
6 files changed, 11 insertions, 10 deletions
| diff --git a/backend/backend.c b/backend/backend.c index fc8ccdb0..790a14b3 100644 --- a/backend/backend.c +++ b/backend/backend.c @@ -32,8 +32,10 @@ bool wlr_backend_start(struct wlr_backend *backend) {  }  void wlr_backend_destroy(struct wlr_backend *backend) { -	if (backend->impl->destroy) { +	if (backend->impl && backend->impl->destroy) {  		backend->impl->destroy(backend); +	} else { +		free(backend);  	}  } diff --git a/backend/wayland/output.c b/backend/wayland/output.c index 6a7b9e54..767d1c6b 100644 --- a/backend/wayland/output.c +++ b/backend/wayland/output.c @@ -103,7 +103,7 @@ struct wlr_output *wlr_wl_output_create(struct wlr_backend *_backend) {  	struct wlr_wl_backend_output *output;  	if (!(output = calloc(sizeof(struct wlr_wl_backend_output), 1))) { -		wlr_log(L_ERROR, "Failed to allocate wlr_output_state"); +		wlr_log(L_ERROR, "Failed to allocate wlr_wl_backend_output");  		return NULL;  	}  	wlr_output_init(&output->wlr_output, &output_impl); diff --git a/render/gles2/renderer.c b/render/gles2/renderer.c index c512016e..75a47187 100644 --- a/render/gles2/renderer.c +++ b/render/gles2/renderer.c @@ -227,10 +227,6 @@ static bool wlr_gles2_buffer_is_drm(struct wlr_renderer *_renderer,  			EGL_TEXTURE_FORMAT, &format);  } -static void wlr_gles2_destroy(struct wlr_renderer *renderer) { -	free(renderer); -} -  static struct wlr_renderer_impl wlr_renderer_impl = {  	.begin = wlr_gles2_begin,  	.end = wlr_gles2_end, @@ -240,7 +236,6 @@ static struct wlr_renderer_impl wlr_renderer_impl = {  	.render_ellipse = wlr_gles2_render_ellipse,  	.formats = wlr_gles2_formats,  	.buffer_is_drm = wlr_gles2_buffer_is_drm, -	.destroy = wlr_gles2_destroy  };  struct wlr_renderer *wlr_gles2_renderer_init(struct wlr_backend *backend) { diff --git a/render/wlr_renderer.c b/render/wlr_renderer.c index 15b8b999..2f6c7fad 100644 --- a/render/wlr_renderer.c +++ b/render/wlr_renderer.c @@ -8,8 +8,10 @@ void wlr_renderer_init(struct wlr_renderer *renderer,  }  void wlr_renderer_destroy(struct wlr_renderer *r) { -	if (r && r->impl->destroy) { +	if (r && r->impl && r->impl->destroy) {  		r->impl->destroy(r); +	} else { +		free(r);  	}  } diff --git a/render/wlr_texture.c b/render/wlr_texture.c index 72d56c8f..f98284a1 100644 --- a/render/wlr_texture.c +++ b/render/wlr_texture.c @@ -9,8 +9,10 @@ void wlr_texture_init(struct wlr_texture *texture,  }  void wlr_texture_destroy(struct wlr_texture *texture) { -	if (texture && texture->impl->destroy) { +	if (texture && texture->impl && texture->impl->destroy) {  		texture->impl->destroy(texture); +	} else { +		free(texture);  	}  } diff --git a/types/wlr_output.c b/types/wlr_output.c index b4618194..e6d308f9 100644 --- a/types/wlr_output.c +++ b/types/wlr_output.c @@ -183,7 +183,7 @@ void wlr_output_destroy(struct wlr_output *output) {  		free(mode);  	}  	list_free(output->modes); -	if (output->impl->destroy) { +	if (output->impl && output->impl->destroy) {  		output->impl->destroy(output);  	} else {  		free(output); | 
