summaryrefslogtreecommitdiffstats
path: root/src/ivi-compositor.h
diff options
context:
space:
mode:
authorMarius Vlad <marius.vlad@collabora.com>2020-04-29 17:14:58 +0300
committerMarius Vlad <marius.vlad@collabora.com>2020-06-08 17:26:36 +0300
commitedbfbad7344c4de62cbf5a4a5c8935afa50d8b4a (patch)
tree41290558d79630da21dc1d7644f6f70dbebfe7ca /src/ivi-compositor.h
parentf73edbcf826fcc46dcc692f8f8b7802e4f053a0f (diff)
shell: Introduce fullscreen and split role type of a surface
With it, this also adds two pending lists, for each role type and aggregates the checks used to compare against the roles type when the surface is being created. There's no functional at this stage. Bug-AGL: SPEC-3334 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I1900399fe35d9dbc26a93c374ac2f86efa860ba6
Diffstat (limited to 'src/ivi-compositor.h')
-rw-r--r--src/ivi-compositor.h34
1 files changed, 30 insertions, 4 deletions
diff --git a/src/ivi-compositor.h b/src/ivi-compositor.h
index 91b5340..3c547aa 100644
--- a/src/ivi-compositor.h
+++ b/src/ivi-compositor.h
@@ -89,6 +89,8 @@ struct ivi_compositor {
struct wl_list pending_surfaces;
struct wl_list popup_pending_apps;
+ struct wl_list fullscreen_pending_apps;
+ struct wl_list split_pending_apps;
struct weston_layer hidden;
struct weston_layer background;
@@ -143,6 +145,9 @@ enum ivi_surface_role {
IVI_SURFACE_ROLE_BACKGROUND,
IVI_SURFACE_ROLE_PANEL,
IVI_SURFACE_ROLE_POPUP,
+ IVI_SURFACE_ROLE_FULLSCREEN,
+ IVI_SURFACE_ROLE_SPLIT_V,
+ IVI_SURFACE_ROLE_SPLIT_H,
};
struct pending_popup {
@@ -153,6 +158,19 @@ struct pending_popup {
struct wl_list link; /** ivi_compositor::popup_pending_surfaces */
};
+struct pending_fullscreen {
+ struct ivi_output *ioutput;
+ char *app_id;
+ struct wl_list link; /** ivi_compositor::fullscreen_pending_apps */
+};
+
+struct pending_split {
+ struct ivi_output *ioutput;
+ char *app_id;
+ uint32_t orientation;
+ struct wl_list link; /** ivi_compositor::split_pending_apps */
+};
+
struct ivi_desktop_surface {
struct ivi_output *pending_output;
struct ivi_output *last_output;
@@ -168,6 +186,15 @@ struct ivi_popup_surface {
int y;
};
+struct ivi_fullscreen_surface {
+ struct ivi_output *output;
+};
+
+struct ivi_split_surface {
+ struct ivi_output *output;
+ uint32_t orientation;
+};
+
struct ivi_panel_surface {
struct ivi_output *output;
enum agl_shell_edge edge;
@@ -199,6 +226,8 @@ struct ivi_surface {
struct ivi_background_surface bg;
struct ivi_panel_surface panel;
struct ivi_popup_surface popup;
+ struct ivi_fullscreen_surface fullscreen;
+ struct ivi_split_surface split;
};
};
@@ -253,11 +282,8 @@ ivi_set_desktop_surface(struct ivi_surface *surface);
/*
* removes the pending popup one
*/
-bool
-ivi_check_pending_desktop_surface_popup(struct ivi_surface *surface);
-
void
-ivi_set_desktop_surface_popup(struct ivi_surface *surface);
+ivi_check_pending_desktop_surface(struct ivi_surface *surface);
void
ivi_reflow_outputs(struct ivi_compositor *ivi);