X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Flayout.c;fp=src%2Flayout.c;h=106f6fb1389af5eee67d76d70f30c3381abfc404;hb=3950b7e787c19bd1917533081c8fb8d4331e4ef3;hp=030e8b433a3b1274ed2e1b4ea428632052724c5a;hpb=ffd00ab3a05351bac2124e5eba8a66f20a3b62da;p=src%2Fagl-compositor.git diff --git a/src/layout.c b/src/layout.c index 030e8b4..106f6fb 100644 --- a/src/layout.c +++ b/src/layout.c @@ -196,6 +196,20 @@ ivi_layout_activate_complete(struct ivi_output *output, surf->desktop.pending_output = NULL; } +static struct ivi_output * +ivi_layout_find_bg_output(struct ivi_compositor *ivi) +{ + struct ivi_output *out; + + wl_list_for_each(out, &ivi->outputs, link) { + if (out->background && + out->background->role == IVI_SURFACE_ROLE_BACKGROUND) + return out; + } + + return NULL; +} + void ivi_layout_desktop_committed(struct ivi_surface *surf) { @@ -206,8 +220,27 @@ ivi_layout_desktop_committed(struct ivi_surface *surf) assert(surf->role == IVI_SURFACE_ROLE_DESKTOP); output = surf->desktop.pending_output; - if (!output) + if (!output) { + struct ivi_output *ivi_bg_output; + + /* FIXME: This should be changed to determine if the policy + * database allows that to happen */ + if (!surf->ivi->quirks.activate_apps_by_default) + return; + + ivi_bg_output = ivi_layout_find_bg_output(surf->ivi); + + /* use the output of the bg to activate the app on start-up by + * default */ + if (surf->view && ivi_bg_output) { + const char *app_id = + weston_desktop_surface_get_app_id(dsurf); + if (app_id && ivi_bg_output) + ivi_layout_activate(ivi_bg_output, app_id); + } + return; + } if (!weston_desktop_surface_get_maximized(dsurf) || geom.width != output->area.width ||