[PATCH weston 17/68] compositor-drm: Refactor destroy drm_fb function

Pekka Paalanen ppaalanen at gmail.com
Tue Feb 21 13:58:58 UTC 2017


On Fri,  9 Dec 2016 19:57:32 +0000
Daniel Stone <daniels at collabora.com> wrote:

> From: Tomohito Esaki <etom at igel.co.jp>
> 
> The drm_fb destroy callback to mostly the same thing regardless of
> whether the buffer is a dumb buffer or gbm buffer. This patch refactors
> the common parts into a new function that can be called for both cases.
> 
> [daniels: Rebased on top of fb->fd changes, cosmetic changes.]
> 
> Differential Revision: https://phabricator.freedesktop.org/D1489
> 
> Signed-off-by: Tomohito Esaki <etom at igel.co.jp>
> Signed-off-by: Daniel Stone <daniels at collabora.com>
> ---
>  libweston/compositor-drm.c | 61 +++++++++++++++++++++++-----------------------
>  1 file changed, 30 insertions(+), 31 deletions(-)
> 
> diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c
> index af43a15..7dbfc6b 100644
> --- a/libweston/compositor-drm.c
> +++ b/libweston/compositor-drm.c
> @@ -251,16 +251,39 @@ drm_sprite_crtc_supported(struct drm_output *output, struct drm_sprite *sprite)
>  }
>  
>  static void
> -drm_fb_destroy_callback(struct gbm_bo *bo, void *data)
> +drm_fb_destroy(struct drm_fb *fb)
>  {
> -	struct drm_fb *fb = data;
> +	drmModeRmFB(fb->fd, fb->fb_id);

fb_id cannot be zero, even thought earlier there was a check. Ok.

> +	weston_buffer_reference(&fb->buffer_ref, NULL);
> +	free(fb);
> +}
> +
> +static void
> +drm_fb_destroy_dumb(struct drm_fb *fb)
> +{
> +	struct drm_mode_destroy_dumb destroy_arg;
>  
> -	if (fb->fb_id)
> -		drmModeRmFB(fb->fd, fb->fb_id);
> +	if (!fb)
> +		return;

Silent acceptance of NULL argument, really?

>  
> -	weston_buffer_reference(&fb->buffer_ref, NULL);
> +	assert(fb->type == BUFFER_PIXMAN_DUMB);
> +

fb->map cannot be NULL, even thought earlier there was a check. Ok.

> +	munmap(fb->map, fb->size);
> +
> +	memset(&destroy_arg, 0, sizeof(destroy_arg));
> +	destroy_arg.handle = fb->handle;
> +	drmIoctl(fb->fd, DRM_IOCTL_MODE_DESTROY_DUMB, &destroy_arg);
> +
> +	drm_fb_destroy(fb);
> +}

With that one nit of silent acceptance fixed:
Reviewed-by: Pekka Paalanen <pekka.paalanen at collabora.co.uk>


Thanks,
pq
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 801 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/wayland-devel/attachments/20170221/f3d002ba/attachment.sig>


More information about the wayland-devel mailing list