[PATCH weston] ivi-shell: listen compositor wake_signal

Emre Ucan eucan at de.adit-jv.com
Tue Jun 5 08:23:00 UTC 2018


If compositor wakes up from sleep state, we have
to trigger repaint for all outputs.

Signed-off-by: Emre Ucan <eucan at de.adit-jv.com>
---
 ivi-shell/ivi-shell.c | 16 ++++++++++++++++
 ivi-shell/ivi-shell.h |  1 +
 2 files changed, 17 insertions(+)

diff --git a/ivi-shell/ivi-shell.c b/ivi-shell/ivi-shell.c
index 51e13a0..0235d26 100644
--- a/ivi-shell/ivi-shell.c
+++ b/ivi-shell/ivi-shell.c
@@ -361,6 +361,8 @@ shell_destroy(struct wl_listener *listener, void *data)
 	text_backend_destroy(shell->text_backend);
 	input_panel_destroy(shell);
 
+	wl_list_remove(&shell->wake_listener.link);
+
 	wl_list_for_each_safe(ivisurf, next, &shell->ivi_surface_list, link) {
 		wl_list_remove(&ivisurf->link);
 		free(ivisurf);
@@ -369,6 +371,17 @@ shell_destroy(struct wl_listener *listener, void *data)
 	free(shell);
 }
 
+/*
+ * Called through the compositor's wake signal.
+ */
+static void
+wake_handler(struct wl_listener *listener, void *data)
+{
+	struct weston_compositor *compositor = data;
+
+	weston_compositor_damage_all(compositor);
+}
+
 static void
 terminate_binding(struct weston_keyboard *keyboard, const struct timespec *time,
 		  uint32_t key, void *data)
@@ -480,6 +493,9 @@ wet_shell_init(struct weston_compositor *compositor,
 	shell->destroy_listener.notify = shell_destroy;
 	wl_signal_add(&compositor->destroy_signal, &shell->destroy_listener);
 
+	shell->wake_listener.notify = wake_handler;
+	wl_signal_add(&compositor->wake_signal, &shell->wake_listener);
+
 	if (input_panel_setup(shell) < 0)
 		goto out;
 
diff --git a/ivi-shell/ivi-shell.h b/ivi-shell/ivi-shell.h
index e35f75f..2c0064d 100644
--- a/ivi-shell/ivi-shell.h
+++ b/ivi-shell/ivi-shell.h
@@ -34,6 +34,7 @@
 struct ivi_shell
 {
 	struct wl_listener destroy_listener;
+	struct wl_listener wake_listener;
 
 	struct weston_compositor *compositor;
 
-- 
2.7.4



More information about the wayland-devel mailing list