summaryrefslogtreecommitdiffstats
path: root/src/shell.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/shell.c')
-rw-r--r--src/shell.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/shell.c b/src/shell.c
index dc07c26..cbe1252 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -88,6 +88,16 @@ ivi_set_desktop_surface(struct ivi_surface *surface)
}
static void
+ivi_set_background_surface(struct ivi_surface *surface)
+{
+ struct ivi_compositor *ivi = surface->ivi;
+ assert(surface->role == IVI_SURFACE_ROLE_BACKGROUND);
+
+ wl_list_insert(&surface->ivi->surfaces, &surface->link);
+ agl_shell_desktop_advertise_application_id(ivi, surface);
+}
+
+static void
ivi_set_desktop_surface_popup(struct ivi_surface *surface)
{
struct ivi_compositor *ivi = surface->ivi;
@@ -1024,8 +1034,14 @@ shell_ready(struct wl_client *client, struct wl_resource *shell_res)
ivi->shell_client.ready = true;
wl_list_for_each(output, &ivi->outputs, link) {
- if (output->background)
+ if (output->background &&
+ output->background->role == IVI_SURFACE_ROLE_BACKGROUND) {
+ /* track the background surface role as a "regular"
+ * surface so we can activate it */
+ ivi_set_background_surface(output->background);
remove_black_surface(output);
+ }
+
ivi_layout_init(ivi, output);
}