On 24.07.2017 17:08, Pekka Paalanen wrote:
> From: Pekka Paalanen <[email protected]>
> 
> This is a simple wrapper for casting the user data of a wl_resource into
> a struct weston_output pointer. Using the wrapper clearly marks all the
> places where a wl_output protocol object is used.
> 
> Replace ALL wl_output related calls to wl_resource_get_user_data() with
> a call to weston_output_from_resource().
> 
> v2: add type assert in weston_output_from_resource().
> 
> Signed-off-by: Pekka Paalanen <[email protected]>

Hi,

Now this is lot better:

Reviewed-by: Armin Krezović <[email protected]>

Thanks,

Armin


> ---
>   compositor/weston-screenshooter.c   |  2 +-
>   desktop-shell/input-panel.c         |  2 +-
>   desktop-shell/shell.c               |  4 ++--
>   fullscreen-shell/fullscreen-shell.c |  4 ++--
>   ivi-shell/input-panel-ivi.c         |  2 +-
>   libweston-desktop/wl-shell.c        |  2 +-
>   libweston-desktop/xdg-shell-v5.c    |  2 +-
>   libweston-desktop/xdg-shell-v6.c    |  2 +-
>   libweston/compositor.c              | 16 ++++++++++++++++
>   libweston/compositor.h              |  3 +++
>   tests/weston-test.c                 |  2 +-
>   11 files changed, 30 insertions(+), 11 deletions(-)
> 
> diff --git a/compositor/weston-screenshooter.c 
> b/compositor/weston-screenshooter.c
> index 9999909e..f874c3eb 100644
> --- a/compositor/weston-screenshooter.c
> +++ b/compositor/weston-screenshooter.c
> @@ -66,7 +66,7 @@ screenshooter_shoot(struct wl_client *client,
>                   struct wl_resource *buffer_resource)
>   {
>       struct weston_output *output =
> -             wl_resource_get_user_data(output_resource);
> +             weston_output_from_resource(output_resource);
>       struct weston_buffer *buffer =
>               weston_buffer_from_resource(buffer_resource);
>   
> diff --git a/desktop-shell/input-panel.c b/desktop-shell/input-panel.c
> index 40a4092e..e6b1541a 100644
> --- a/desktop-shell/input-panel.c
> +++ b/desktop-shell/input-panel.c
> @@ -274,7 +274,7 @@ input_panel_surface_set_toplevel(struct wl_client *client,
>       wl_list_insert(&shell->input_panel.surfaces,
>                      &input_panel_surface->link);
>   
> -     input_panel_surface->output = 
> wl_resource_get_user_data(output_resource);
> +     input_panel_surface->output = 
> weston_output_from_resource(output_resource);
>       input_panel_surface->panel = 0;
>   }
>   
> diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
> index f1577c12..832a7b74 100644
> --- a/desktop-shell/shell.c
> +++ b/desktop-shell/shell.c
> @@ -2941,7 +2941,7 @@ desktop_shell_set_background(struct wl_client *client,
>       surface->committed = background_committed;
>       surface->committed_private = shell;
>       weston_surface_set_label_func(surface, background_get_label);
> -     surface->output = wl_resource_get_user_data(output_resource);
> +     surface->output = weston_output_from_resource(output_resource);
>       view->output = surface->output;
>       weston_desktop_shell_send_configure(resource, 0,
>                                           surface_resource,
> @@ -3026,7 +3026,7 @@ desktop_shell_set_panel(struct wl_client *client,
>       surface->committed = panel_committed;
>       surface->committed_private = shell;
>       weston_surface_set_label_func(surface, panel_get_label);
> -     surface->output = wl_resource_get_user_data(output_resource);
> +     surface->output = weston_output_from_resource(output_resource);
>       view->output = surface->output;
>       weston_desktop_shell_send_configure(resource, 0,
>                                           surface_resource,
> diff --git a/fullscreen-shell/fullscreen-shell.c 
> b/fullscreen-shell/fullscreen-shell.c
> index 7368cb42..6f4565a7 100644
> --- a/fullscreen-shell/fullscreen-shell.c
> +++ b/fullscreen-shell/fullscreen-shell.c
> @@ -769,7 +769,7 @@ fullscreen_shell_present_surface(struct wl_client *client,
>       }
>   
>       if (output_res) {
> -             output = wl_resource_get_user_data(output_res);
> +             output = weston_output_from_resource(output_res);
>               fsout = fs_output_for_output(output);
>               fs_output_set_surface(fsout, surface, method, 0, 0);
>       } else {
> @@ -813,7 +813,7 @@ fullscreen_shell_present_surface_for_mode(struct 
> wl_client *client,
>       struct weston_seat *seat;
>       struct fs_output *fsout;
>   
> -     output = wl_resource_get_user_data(output_res);
> +     output = weston_output_from_resource(output_res);
>       fsout = fs_output_for_output(output);
>   
>       if (surface_res == NULL) {
> diff --git a/ivi-shell/input-panel-ivi.c b/ivi-shell/input-panel-ivi.c
> index 57d1cb29..0008a52d 100644
> --- a/ivi-shell/input-panel-ivi.c
> +++ b/ivi-shell/input-panel-ivi.c
> @@ -275,7 +275,7 @@ input_panel_surface_set_toplevel(struct wl_client *client,
>       wl_list_insert(&shell->input_panel.surfaces,
>                      &input_panel_surface->link);
>   
> -     input_panel_surface->output = 
> wl_resource_get_user_data(output_resource);
> +     input_panel_surface->output = 
> weston_output_from_resource(output_resource);
>       input_panel_surface->panel = 0;
>   }
>   
> diff --git a/libweston-desktop/wl-shell.c b/libweston-desktop/wl-shell.c
> index 399139cf..66553f45 100644
> --- a/libweston-desktop/wl-shell.c
> +++ b/libweston-desktop/wl-shell.c
> @@ -302,7 +302,7 @@ 
> weston_desktop_wl_shell_surface_protocol_set_fullscreen(struct wl_client 
> *wl_cli
>       struct weston_output *output = NULL;
>   
>       if (output_resource != NULL)
> -             output = wl_resource_get_user_data(output_resource);
> +             output = weston_output_from_resource(output_resource);
>   
>       weston_desktop_wl_shell_change_state(surface, FULLSCREEN, NULL, 0, 0);
>       weston_desktop_api_fullscreen_requested(surface->desktop, dsurface,
> diff --git a/libweston-desktop/xdg-shell-v5.c 
> b/libweston-desktop/xdg-shell-v5.c
> index c91c2590..d7c49b15 100644
> --- a/libweston-desktop/xdg-shell-v5.c
> +++ b/libweston-desktop/xdg-shell-v5.c
> @@ -553,7 +553,7 @@ weston_desktop_xdg_surface_protocol_set_fullscreen(struct 
> wl_client *wl_client,
>       struct weston_output *output = NULL;
>   
>       if (output_resource != NULL)
> -             output = wl_resource_get_user_data(output_resource);
> +             output = weston_output_from_resource(output_resource);
>   
>       weston_desktop_xdg_surface_ensure_added(surface);
>       weston_desktop_api_fullscreen_requested(surface->desktop, dsurface,
> diff --git a/libweston-desktop/xdg-shell-v6.c 
> b/libweston-desktop/xdg-shell-v6.c
> index de5d3e05..dda0bf92 100644
> --- a/libweston-desktop/xdg-shell-v6.c
> +++ b/libweston-desktop/xdg-shell-v6.c
> @@ -507,7 +507,7 @@ 
> weston_desktop_xdg_toplevel_protocol_set_fullscreen(struct wl_client 
> *wl_client,
>       struct weston_output *output = NULL;
>   
>       if (output_resource != NULL)
> -             output = wl_resource_get_user_data(output_resource);
> +             output = weston_output_from_resource(output_resource);
>   
>       weston_desktop_xdg_toplevel_ensure_added(toplevel);
>       weston_desktop_api_fullscreen_requested(toplevel->base.desktop, 
> dsurface,
> diff --git a/libweston/compositor.c b/libweston/compositor.c
> index 296b02ee..813b6634 100644
> --- a/libweston/compositor.c
> +++ b/libweston/compositor.c
> @@ -4323,6 +4323,22 @@ bind_output(struct wl_client *client,
>               wl_output_send_done(resource);
>   }
>   
> +/** Get the backing object of wl_output
> + *
> + * \param resource A wl_output protocol object.
> + * \return The backing object (user data) of a wl_resource representing a
> + * wl_output protocol object.
> + */
> +WL_EXPORT struct weston_output *
> +weston_output_from_resource(struct wl_resource *resource)
> +{
> +     assert(wl_resource_instance_of(resource, &wl_output_interface,
> +                                    &output_interface));
> +
> +     return wl_resource_get_user_data(resource);
> +}
> +
> +
>   /* Move other outputs when one is resized so the space remains contiguous. 
> */
>   static void
>   weston_compositor_reflow_outputs(struct weston_compositor *compositor,
> diff --git a/libweston/compositor.h b/libweston/compositor.h
> index 442d046e..769203a1 100644
> --- a/libweston/compositor.h
> +++ b/libweston/compositor.h
> @@ -1941,6 +1941,9 @@ weston_output_disable(struct weston_output *output);
>   void
>   weston_pending_output_coldplug(struct weston_compositor *compositor);
>   
> +struct weston_output *
> +weston_output_from_resource(struct wl_resource *resource);
> +
>   #ifdef  __cplusplus
>   }
>   #endif
> diff --git a/tests/weston-test.c b/tests/weston-test.c
> index 0123e994..189fcc1b 100644
> --- a/tests/weston-test.c
> +++ b/tests/weston-test.c
> @@ -473,7 +473,7 @@ capture_screenshot(struct wl_client *client,
>                  struct wl_resource *buffer_resource)
>   {
>       struct weston_output *output =
> -             wl_resource_get_user_data(output_resource);
> +             weston_output_from_resource(output_resource);
>       struct weston_buffer *buffer =
>               weston_buffer_from_resource(buffer_resource);
>   
> 

_______________________________________________
wayland-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to