summaryrefslogtreecommitdiffstats
path: root/src/ivi-compositor.h
diff options
context:
space:
mode:
authorMarius Vlad <marius.vlad@collabora.com>2020-05-29 20:41:58 +0300
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>2020-06-14 12:53:38 +0000
commit978c7f8c63d118a0fa8fcaab8d1d7d141be4767c (patch)
tree1b15f949fa116ef9ef1c857b0f770465865812ef /src/ivi-compositor.h
parent0e4d30b44e0b1614ce5e0a2d63c808e704d13ee2 (diff)
src/: Add the remote surface role
This patch adds the 'remote' surface role, which clients can make use of to hint the compositor that it should place the surface on other output. While both private extension protocols (agl-shell and agl-shell-desktop) explicitly require a wl_output when activating or when setting surface roles, we still need the inform the compositor that the surface should be placed on another output. This is due to the activate_by_default functionality that requires having an output being present, with the default regular XDG desktop role deriving its output by using the output of the backgound surface (which is being normally set by the client shell). Just like pop-up dialog role and split surface role this patch adds another temporary hold up place before the surface is actually created. Bug-AGL: SPEC-3280 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ic67246ecc183826ae59b2c99a671885d61040249
Diffstat (limited to 'src/ivi-compositor.h')
-rw-r--r--src/ivi-compositor.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/ivi-compositor.h b/src/ivi-compositor.h
index 5244afe..671ceac 100644
--- a/src/ivi-compositor.h
+++ b/src/ivi-compositor.h
@@ -91,6 +91,7 @@ struct ivi_compositor {
struct wl_list popup_pending_apps;
struct wl_list fullscreen_pending_apps;
struct wl_list split_pending_apps;
+ struct wl_list remote_pending_apps;
struct weston_layer hidden;
struct weston_layer background;
@@ -149,6 +150,7 @@ enum ivi_surface_role {
IVI_SURFACE_ROLE_FULLSCREEN,
IVI_SURFACE_ROLE_SPLIT_V,
IVI_SURFACE_ROLE_SPLIT_H,
+ IVI_SURFACE_ROLE_REMOTE,
};
struct pending_popup {
@@ -172,6 +174,12 @@ struct pending_split {
struct wl_list link; /** ivi_compositor::split_pending_apps */
};
+struct pending_remote {
+ struct ivi_output *ioutput;
+ char *app_id;
+ struct wl_list link; /** ivi_compositor::remote_pending_apps */
+};
+
struct ivi_desktop_surface {
struct ivi_output *pending_output;
struct ivi_output *last_output;
@@ -196,6 +204,10 @@ struct ivi_split_surface {
uint32_t orientation;
};
+struct ivi_remote_surface {
+ struct ivi_output *output;
+};
+
struct ivi_panel_surface {
struct ivi_output *output;
enum agl_shell_edge edge;
@@ -229,6 +241,7 @@ struct ivi_surface {
struct ivi_popup_surface popup;
struct ivi_fullscreen_surface fullscreen;
struct ivi_split_surface split;
+ struct ivi_remote_surface remote;
};
};