summaryrefslogtreecommitdiffstats
path: root/meta-agl-profile-graphical/recipes-graphics/wayland/weston/0009-ivi-shell-added-libweston-desktop-api_implementation.patch
diff options
context:
space:
mode:
authorJan-Simon Möller <jsmoeller@linuxfoundation.org>2018-04-16 22:14:52 +0200
committerJan-Simon Möller <jsmoeller@linuxfoundation.org>2018-04-20 17:07:06 +0200
commitbb0882c5dad030f676e424265ebcd869bb3ff899 (patch)
treed95bb2d7ad6b5ac47427f73babe015b0ade02342 /meta-agl-profile-graphical/recipes-graphics/wayland/weston/0009-ivi-shell-added-libweston-desktop-api_implementation.patch
parent97e5e76efa44f55ee9aaf3998bb3df38b829706c (diff)
Introduce meta-agl-profile-core and meta-agl-profile-graphics
Rework towards agl profiles. This change is part of a series of changes to create the AGL profiles. This set will mainly introduce the 'core' profile. It is setup to be a drop-in change, thus some files were kept in (dummy) locations for now. However, they'll be taken care of in the next changes in this series. The main target of the meta-agl-profile-core layer is to host: - a minimal, bootable image with network and package management enabled -- agl-image-boot - a minimal image with network and packagemanagement and the AGL APIs -- agl-image-minimal The layer meta-agl-profile-graphical is used as superset of these and includes support for egl+wayland+weston. All recipes concerning graphics were moved there. This is not a full profile as we still have to migrate some parts of meta-agl-demo in a follow-up changeset. The roadmap as discussed during the F2F session in Karlsruhe is: - week 16 : core profile and profiles w/o graphics - week 17 : graphical profiles - week 18 : final conversion of the demo image v2: moved agl-login-manager from -graphics to -core (see Jose's comment) v3: moved back after discussion - follow-up in separate changeset Change-Id: Idacb0d1274baac1f63f8d1b850d4b1104ac33918 Signed-off-by: Jan-Simon Möller <jsmoeller@linuxfoundation.org>
Diffstat (limited to 'meta-agl-profile-graphical/recipes-graphics/wayland/weston/0009-ivi-shell-added-libweston-desktop-api_implementation.patch')
-rw-r--r--meta-agl-profile-graphical/recipes-graphics/wayland/weston/0009-ivi-shell-added-libweston-desktop-api_implementation.patch166
1 files changed, 166 insertions, 0 deletions
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston/0009-ivi-shell-added-libweston-desktop-api_implementation.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/weston/0009-ivi-shell-added-libweston-desktop-api_implementation.patch
new file mode 100644
index 000000000..6a72f15d8
--- /dev/null
+++ b/meta-agl-profile-graphical/recipes-graphics/wayland/weston/0009-ivi-shell-added-libweston-desktop-api_implementation.patch
@@ -0,0 +1,166 @@
+index 84db2c97..e797e4f9 100644
+--- a/ivi-shell/ivi-shell.c
++++ b/ivi-shell/ivi-shell.c
+@@ -489,6 +489,162 @@ shell_add_bindings(struct weston_compositor *compositor,
+ shell);
+ }
+
++/*
++ * libweston-desktop
++ */
++
++static void
++desktop_surface_ping_timeout(struct weston_desktop_client *client,
++ void *user_data)
++{
++ weston_log("ivi-shell: desktop_surface_ping_timeout is not supported\n");
++}
++
++static void
++desktop_surface_pong(struct weston_desktop_client *client,
++ void *user_data)
++{
++ weston_log("ivi-shell: desktop_surface_pong is not supported\n");
++}
++
++static void
++desktop_surface_added(struct weston_desktop_surface *surface,
++ void *user_data)
++{
++ struct ivi_shell *shell = (struct ivi_shell *) user_data;
++ struct ivi_layout_surface *layout_surface;
++ struct ivi_shell_surface *ivisurf;
++ struct weston_surface *weston_surf =
++ weston_desktop_surface_get_surface(surface);
++
++ layout_surface = ivi_layout_desktop_surface_create(weston_surf,
++ IVI_INVALID_ID);
++ if (!layout_surface) {
++ return;
++ }
++
++ layout_surface->weston_desktop_surface = surface;
++
++ ivisurf = zalloc(sizeof *ivisurf);
++ if (!ivisurf) {
++ return;
++ }
++
++ ivisurf->shell = shell;
++ ivisurf->id_surface = IVI_INVALID_ID;
++
++ ivisurf->width = 0;
++ ivisurf->height = 0;
++ ivisurf->layout_surface = layout_surface;
++ ivisurf->surface = weston_surf;
++
++ weston_desktop_surface_set_user_data(surface, ivisurf);
++}
++
++static void
++desktop_surface_removed(struct weston_desktop_surface *surface,
++ void *user_data)
++{
++ struct ivi_shell_surface *ivisurf = (struct ivi_shell_surface *)
++ weston_desktop_surface_get_user_data(surface);
++
++ assert(ivisurf != NULL);
++
++ if (ivisurf->layout_surface)
++ layout_surface_cleanup(ivisurf);
++}
++
++static void
++desktop_surface_committed(struct weston_desktop_surface *surface,
++ int32_t sx, int32_t sy, void *user_data)
++{
++ struct ivi_shell_surface *ivisurf = (struct ivi_shell_surface *)
++ weston_desktop_surface_get_user_data(surface);
++ struct weston_surface *weston_surf =
++ weston_desktop_surface_get_surface(surface);
++
++ if(!ivisurf)
++ return;
++
++ if (weston_surf->width == 0 || weston_surf->height == 0)
++ return;
++
++ if (ivisurf->width != weston_surf->width ||
++ ivisurf->height != weston_surf->height) {
++ ivisurf->width = weston_surf->width;
++ ivisurf->height = weston_surf->height;
++
++ ivi_layout_desktop_surface_configure(ivisurf->layout_surface,
++ weston_surf->width,
++ weston_surf->height);
++ }
++}
++
++static void
++desktop_surface_move(struct weston_desktop_surface *surface,
++ struct weston_seat *seat, uint32_t serial, void *user_data)
++{
++ weston_log("ivi-shell: desktop_surface_move is not supported\n");
++}
++
++static void
++desktop_surface_resize(struct weston_desktop_surface *surface,
++ struct weston_seat *seat, uint32_t serial,
++ enum weston_desktop_surface_edge edges, void *user_data)
++{
++ weston_log("ivi-shell: desktop_surface_resize is not supported\n");
++}
++
++static void
++desktop_surface_fullscreen_requested(struct weston_desktop_surface *surface,
++ bool fullscreen,
++ struct weston_output *output,
++ void *user_data)
++{
++ weston_log("ivi-shell: desktop_surface_fullscreen_requested is not supported\n");
++}
++
++static void
++desktop_surface_maximized_requested(struct weston_desktop_surface *surface,
++ bool maximized, void *user_data)
++{
++ weston_log("ivi-shell: desktop_surface_maximized_requested is not supported\n");
++}
++
++static void
++desktop_surface_minimized_requested(struct weston_desktop_surface *surface,
++ void *user_data)
++{
++ weston_log("ivi-shell: desktop_surface_minimized_requested is not supported\n");
++}
++
++static void
++desktop_surface_set_xwayland_position(struct weston_desktop_surface *surface,
++ int32_t x, int32_t y, void *user_data)
++{
++ weston_log("ivi-shell: desktop_surface_set_xwayland_position is not supported\n");
++}
++
++static const struct weston_desktop_api shell_desktop_api = {
++ .struct_size = sizeof(struct weston_desktop_api),
++ .ping_timeout = desktop_surface_ping_timeout,
++ .pong = desktop_surface_pong,
++ .surface_added = desktop_surface_added,
++ .surface_removed = desktop_surface_removed,
++ .committed = desktop_surface_committed,
++
++ .move = desktop_surface_move,
++ .resize = desktop_surface_resize,
++ .fullscreen_requested = desktop_surface_fullscreen_requested,
++ .maximized_requested = desktop_surface_maximized_requested,
++ .minimized_requested = desktop_surface_minimized_requested,
++ .set_xwayland_position = desktop_surface_set_xwayland_position,
++};
++
++/*
++ * end of libweston-desktop
++ */
++
+ /*
+ * Initialization of ivi-shell.
+ */