libweston: Add a signal to fire when the idle inhibitor is dropped

This commit is contained in:
Bryce Harrington
2016-08-23 13:39:14 -07:00
parent 689feced3c
commit ca5b62426a
2 changed files with 21 additions and 9 deletions
+20 -9
View File
@@ -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,15 +4730,7 @@ struct weston_idle_inhibitor {
struct weston_surface *surface;
};
static void
destroy_idle_inhibitor(struct wl_resource *resource)
{
struct weston_idle_inhibitor *inhibitor = wl_resource_get_user_data(resource);
inhibitor->surface = NULL;
free(inhibitor);
}
/* Called when the client requests destruction of the idle inhibitor */
static void
idle_inhibitor_destroy(struct wl_client *client, struct wl_resource *resource)
{
@@ -4746,6 +4739,24 @@ idle_inhibitor_destroy(struct wl_client *client, struct wl_resource *resource)
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
destroy_idle_inhibitor(struct wl_resource *resource)
{
struct weston_idle_inhibitor *inhibitor = wl_resource_get_user_data(resource);
weston_log("destroy_idle_inhibitor\n");
inhibitor->surface = NULL;
free(inhibitor);
}
static const struct zwp_idle_inhibitor_v1_interface idle_inhibitor_interface = {
+1
View File
@@ -1071,6 +1071,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;