Added XDG compatibility to ivi-shell
[AGL/meta-agl.git] / meta-agl / recipes-graphics / wayland / weston / 0005-ivi-layout-introcuded-configure_desktop_changed.patch
diff --git a/meta-agl/recipes-graphics/wayland/weston/0005-ivi-layout-introcuded-configure_desktop_changed.patch b/meta-agl/recipes-graphics/wayland/weston/0005-ivi-layout-introcuded-configure_desktop_changed.patch
new file mode 100644 (file)
index 0000000..ddd949e
--- /dev/null
@@ -0,0 +1,74 @@
+index 5b1f12f0..dd0997aa 100644
+--- a/ivi-shell/ivi-layout-export.h
++++ b/ivi-shell/ivi-layout-export.h
+@@ -187,6 +187,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 2b8bd472..fe5be01a 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 fa8e75f6..690af742 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,