[PATCH weston 5/14] ivi-layout: introduced configure_desktop_changed

Michael Teyfel mteyfel at de.adit-jv.com
Tue Oct 17 10:45:27 UTC 2017


Introduced signal configure_desktop_changed with interface. This signal
should be sent, when a desktop-surface is configured.

Signed-off-by: Michael Teyfel <mteyfel at de.adit-jv.com>
---
 ivi-shell/ivi-layout-export.h  | 10 ++++++++++
 ivi-shell/ivi-layout-private.h |  1 +
 ivi-shell/ivi-layout.c         | 17 +++++++++++++++++
 3 files changed, 28 insertions(+)

diff --git a/ivi-shell/ivi-layout-export.h b/ivi-shell/ivi-layout-export.h
index 5b1f12f..dd0997a 100644
--- a/ivi-shell/ivi-layout-export.h
+++ b/ivi-shell/ivi-layout-export.h
@@ -188,6 +188,16 @@ struct ivi_layout_interface {
 	int32_t (*add_listener_configure_surface)(struct wl_listener *listener);
 
 	/**
+	 * \brief add a listener for notification when desktop_surface is configured
+	 *
+	 * When an desktop_surface is configured, a signal is emitted
+	 * to the listening controller plugins.
+	 * The pointer of the configured desktop_surface is sent as the void *data argument
+	 * to the wl_listener::notify callback function of the listener.
+	 */
+	int32_t (*add_listener_configure_desktop_surface)(struct wl_listener *listener);
+
+	/**
 	 * \brief Get all ivi_surfaces which are currently registered and managed
 	 * by the services
 	 *
diff --git a/ivi-shell/ivi-layout-private.h b/ivi-shell/ivi-layout-private.h
index 2b8bd47..fe5be01 100644
--- a/ivi-shell/ivi-layout-private.h
+++ b/ivi-shell/ivi-layout-private.h
@@ -104,6 +104,7 @@ struct ivi_layout {
 		struct wl_signal created;
 		struct wl_signal removed;
 		struct wl_signal configure_changed;
+		struct wl_signal configure_desktop_changed;
 	} surface_notification;
 
 	struct weston_layer layout_layer;
diff --git a/ivi-shell/ivi-layout.c b/ivi-shell/ivi-layout.c
index fa8e75f..690af74 100644
--- a/ivi-shell/ivi-layout.c
+++ b/ivi-shell/ivi-layout.c
@@ -1040,6 +1040,21 @@ ivi_layout_add_listener_configure_surface(struct wl_listener *listener)
 	return IVI_SUCCEEDED;
 }
 
+static int32_t
+ivi_layout_add_listener_configure_desktop_surface(struct wl_listener *listener)
+{
+	struct ivi_layout *layout = get_instance();
+
+	if (!listener) {
+		weston_log("ivi_layout_add_listener_configure_desktop_surface: invalid argument\n");
+		return IVI_FAILED;
+	}
+
+	wl_signal_add(&layout->surface_notification.configure_desktop_changed, listener);
+
+	return IVI_SUCCEEDED;
+}
+
 uint32_t
 ivi_layout_get_id_of_surface(struct ivi_layout_surface *ivisurf)
 {
@@ -2057,6 +2072,7 @@ ivi_layout_init_with_compositor(struct weston_compositor *ec)
 	wl_signal_init(&layout->surface_notification.created);
 	wl_signal_init(&layout->surface_notification.removed);
 	wl_signal_init(&layout->surface_notification.configure_changed);
+	wl_signal_init(&layout->surface_notification.configure_desktop_changed);
 
 	/* Add layout_layer at the last of weston_compositor.layer_list */
 	weston_layer_init(&layout->layout_layer, ec);
@@ -2081,6 +2097,7 @@ static struct ivi_layout_interface ivi_layout_interface = {
 	.add_listener_create_surface	= ivi_layout_add_listener_create_surface,
 	.add_listener_remove_surface	= ivi_layout_add_listener_remove_surface,
 	.add_listener_configure_surface	= ivi_layout_add_listener_configure_surface,
+	.add_listener_configure_desktop_surface	= ivi_layout_add_listener_configure_desktop_surface,
 	.get_surface				= shell_get_ivi_layout_surface,
 	.get_surfaces				= ivi_layout_get_surfaces,
 	.get_id_of_surface			= ivi_layout_get_id_of_surface,
-- 
2.7.4



More information about the wayland-devel mailing list