On 22/09/2017, 17.33, "wayland-devel on behalf of Pekka Paalanen" 
<wayland-devel-boun...@lists.freedesktop.org on behalf of ppaala...@gmail.com> 
wrote:
> 
> From: Pekka Paalanen <pekka.paala...@collabora.co.uk>
> 
> Rename fbdev_frame_buffer_destroy() to fbdev_frame_buffer_unmap()
> because that is what it does. Adding the destruction of hw_surface in it
> makes it the perfect counterpart to fbdev_frame_buffer_map() which
> simplifies the code.
> 
> fbdev_frame_buffer_map() can no longer call that, so just open-code the
> munmap() there. It is an error path, we don't really care about
> failures in an error path.
> 
> The error path of fbdev_output_enable() is converted to call
> buffer_unmap() since that is exactly what it did.
> 
> fbdev_output_disable() became redundant, being identical to
> fbdev_frame_buffer_unmap().
> 
> Invariant: output->hw_surface cannot be non-NULL without output->fb
> being non-NULL. hw_surface wraps the mmapped memory so cannot exist
> without the mmap.
> 
> Signed-off-by: Pekka Paalanen <pekka.paala...@collabora.co.uk>
> ---
>  libweston/compositor-fbdev.c | 52 
> ++++++++++++++++++--------------------------
>  1 file changed, 21 insertions(+), 31 deletions(-)
> 
> diff --git a/libweston/compositor-fbdev.c b/libweston/compositor-fbdev.c
> index 402648d0..22100f98 100644
> --- a/libweston/compositor-fbdev.c
> +++ b/libweston/compositor-fbdev.c
> @@ -40,6 +40,7 @@
>  #include <unistd.h>
>  #include <linux/fb.h>
>  #include <linux/input.h>
> +#include <assert.h>
>  
>  #include <libudev.h>
>  
> @@ -335,8 +336,6 @@ fbdev_set_screen_info(int fd, struct fbdev_screeninfo 
> *info)
>       return 1;
>  }
>  
> -static void fbdev_frame_buffer_destroy(struct fbdev_output *output);
> -
>  /* Returns an FD for the frame buffer device. */
>  static int
>  fbdev_frame_buffer_open(const char *fb_dev,
> @@ -401,8 +400,10 @@ fbdev_frame_buffer_map(struct fbdev_output *output, int 
> fd)
>       retval = 0;
>  
>  out_unmap:
> -     if (retval != 0 && output->fb != NULL)
> -             fbdev_frame_buffer_destroy(output);
> +     if (retval != 0 && output->fb != NULL) {
> +             munmap(output->fb, output->fb_info.buffer_length);
> +             output->fb = NULL;
> +     }
>  
>  out_close:
>       if (fd >= 0)
> @@ -412,9 +413,18 @@ out_close:
>  }
>  
>  static void
> -fbdev_frame_buffer_destroy(struct fbdev_output *output)
> +fbdev_frame_buffer_unmap(struct fbdev_output *output)
>  {
> -     weston_log("Destroying fbdev frame buffer.\n");
> +     if (!output->fb) {
> +             assert(!output->hw_surface);
> +             return;
> +     }
> +
> +     weston_log("Unmapping fbdev frame buffer.\n");
> +
> +     if (output->hw_surface)
> +             pixman_image_unref(output->hw_surface);
> +     output->hw_surface = NULL;

nitpick: hw_surface need only be set NULL if it was non-NULL (which
seems to be the pattern elsewhere).  But, in any case:

Reviewed-by: Ian Ray <ian....@ge.com>

<snip>


_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to