[PATCH weston v5 4/7] libweston: Add a signal to fire when the idle inhibitor is dropped

Quentin Glidic sardemff7+wayland at sardemff7.net
Tue Aug 30 11:25:59 UTC 2016


On 30/08/2016 03:34, Bryce Harrington wrote:
> Signed-off-by: Bryce Harrington <bryce at osg.samsung.com>

Why not squash it to patch 3?
And noise reordering? :-)

Cheers,


> ---
>  libweston/compositor.c | 23 +++++++++++++++++------
>  libweston/compositor.h |  1 +
>  2 files changed, 18 insertions(+), 6 deletions(-)
>
> diff --git a/libweston/compositor.c b/libweston/compositor.c
> index 92f74aa..f503933 100644
> --- a/libweston/compositor.c
> +++ b/libweston/compositor.c
> @@ -459,6 +459,7 @@ weston_surface_create(struct weston_compositor *compositor)
>
>  	wl_signal_init(&surface->destroy_signal);
>  	wl_signal_init(&surface->commit_signal);
> +	wl_signal_init(&surface->drop_idle_inhibitor_signal);
>
>  	surface->compositor = compositor;
>  	surface->ref_count = 1;
> @@ -4729,23 +4730,33 @@ struct weston_idle_inhibitor {
>  	struct weston_surface *surface;
>  };
>
> +/* Called when the client requests destruction of the idle inhibitor */
>  static void
> -destroy_idle_inhibitor(struct wl_resource *resource)
> +idle_inhibitor_destroy(struct wl_client *client, struct wl_resource *resource)
>  {
>  	struct weston_idle_inhibitor *inhibitor = wl_resource_get_user_data(resource);
>
> -	inhibitor->surface = NULL;
> -	free(inhibitor);
> +	assert(inhibitor);
> +
> +	inhibitor->surface->inhibit_idling = false;
> +
> +	// Notify to re-queue any idle behaviors
> +	wl_signal_emit(&inhibitor->surface->drop_idle_inhibitor_signal,
> +		       inhibitor->surface);
> +
> +	weston_log("idle_inhibitor_destroy\n");
>  }
>
> +/* Called when the idle inhibitor is destroyed on the server-side */
>  static void
> -idle_inhibitor_destroy(struct wl_client *client, struct wl_resource *resource)
> +destroy_idle_inhibitor(struct wl_resource *resource)
>  {
>  	struct weston_idle_inhibitor *inhibitor = wl_resource_get_user_data(resource);
>
> -	assert(inhibitor);
> +	weston_log("destroy_idle_inhibitor\n");
>
> -	inhibitor->surface->inhibit_idling = false;
> +	inhibitor->surface = NULL;
> +	free(inhibitor);
>  }
>
>  static const struct zwp_idle_inhibitor_v1_interface idle_inhibitor_interface = {
> diff --git a/libweston/compositor.h b/libweston/compositor.h
> index eb76c8a..3db86ec 100644
> --- a/libweston/compositor.h
> +++ b/libweston/compositor.h
> @@ -1078,6 +1078,7 @@ struct weston_surface {
>  	struct wl_signal destroy_signal; /* callback argument: this surface */
>  	struct weston_compositor *compositor;
>  	struct wl_signal commit_signal;
> +	struct wl_signal drop_idle_inhibitor_signal;
>
>  	/** Damage in local coordinates from the client, for tex upload. */
>  	pixman_region32_t damage;
>


-- 

Quentin “Sardem FF7” Glidic


More information about the wayland-devel mailing list