[PATCH weston] ivi-shell: add screen_remove_layer API

Pekka Paalanen ppaalanen at gmail.com
Fri Jan 27 15:44:41 UTC 2017


On Wed, 18 Jan 2017 16:08:16 +0000
"Ucan, Emre (ADITG/SW1)" <eucan at de.adit-jv.com> wrote:

> It is analagous to layer_remove_surface API.
> The API removes a layer from the render order of
> the screen.
> 
> Signed-off-by: Emre Ucan <eucan at de.adit-jv.com>
> ---
>  ivi-shell/ivi-layout-export.h |   10 ++++++++++
>  ivi-shell/ivi-layout.c        |   22 ++++++++++++++++++++++
>  2 files changed, 32 insertions(+)
> 
> diff --git a/ivi-shell/ivi-layout-export.h b/ivi-shell/ivi-layout-export.h
> index 2317d6e..ea3bf37 100644
> --- a/ivi-shell/ivi-layout-export.h
> +++ b/ivi-shell/ivi-layout-export.h
> @@ -541,6 +541,16 @@ struct ivi_layout_interface {
>  				    struct ivi_layout_layer *addlayer);
>  
>  	/**
> +	 * \brief Remove a ivi_layer from a weston_output which is currently managed
> +	 * by the service
> +	 *
> +	 * \return IVI_SUCCEEDED if the method call was successful
> +	 * \return IVI_FAILED if the method call was failed
> +	 */
> +	int32_t (*screen_remove_layer)(struct weston_output *output,
> +				    struct ivi_layout_layer *removelayer);
> +

Hi Emre,

the patch looks good otherwise, except the new vfunc should go to the
end of the struct by the ABI rules.

See hmi_controller.c:controller_module_init() for the check we do. I
thought we had the ABI rules documented somewhere, but I can't seem to
find it.

Otherwise this is an ABI break and in principle we should not merge it
during the major feature freeze if ever.


Thanks,
pq

> +	/**
>  	 * \brief Sets render order of ivi_layers on a weston_output
>  	 *
>  	 * \return IVI_SUCCEEDED if the method call was successful
> diff --git a/ivi-shell/ivi-layout.c b/ivi-shell/ivi-layout.c
> index 60d05c4..9c1865a 100644
> --- a/ivi-shell/ivi-layout.c
> +++ b/ivi-shell/ivi-layout.c
> @@ -1660,6 +1660,27 @@ ivi_layout_screen_add_layer(struct weston_output *output,
>  }
>  
>  static int32_t
> +ivi_layout_screen_remove_layer(struct weston_output *output,
> +			    struct ivi_layout_layer *removelayer)
> +{
> +	struct ivi_layout_screen *iviscrn;
> +
> +	if (output == NULL || removelayer == NULL) {
> +		weston_log("ivi_layout_screen_remove_layer: invalid argument\n");
> +		return IVI_FAILED;
> +	}
> +
> +	iviscrn = get_screen_from_output(output);
> +
> +	wl_list_remove(&removelayer->pending.link);
> +	wl_list_init(&removelayer->pending.link);
> +
> +	iviscrn->order.dirty = 1;
> +
> +	return IVI_SUCCEEDED;
> +}
> +
> +static int32_t
>  ivi_layout_screen_set_render_order(struct weston_output *output,
>  				   struct ivi_layout_layer **pLayer,
>  				   const int32_t number)
> @@ -2084,6 +2105,7 @@ static struct ivi_layout_interface ivi_layout_interface = {
>  	 */
>  	.get_screens_under_layer	= ivi_layout_get_screens_under_layer,
>  	.screen_add_layer		= ivi_layout_screen_add_layer,
> +	.screen_remove_layer		= ivi_layout_screen_remove_layer,
>  	.screen_set_render_order	= ivi_layout_screen_set_render_order,
>  
>  	/**

-------------- 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/20170127/3f8c30a0/attachment-0001.sig>


More information about the wayland-devel mailing list