diff options
-rw-r--r-- | src/desktop.c | 1 | ||||
-rw-r--r-- | src/ivi-compositor.h | 1 | ||||
-rw-r--r-- | src/layout.c | 9 |
3 files changed, 10 insertions, 1 deletions
diff --git a/src/desktop.c b/src/desktop.c index da28fc6..3e36415 100644 --- a/src/desktop.c +++ b/src/desktop.c @@ -80,6 +80,7 @@ desktop_surface_added(struct weston_desktop_surface *dsurface, void *userdata) surface->ivi = ivi; surface->dsurface = dsurface; surface->role = IVI_SURFACE_ROLE_NONE; + surface->activated_by_default = false; if (ivi->policy && ivi->policy->api.surface_create && !ivi->policy->api.surface_create(surface, ivi)) { diff --git a/src/ivi-compositor.h b/src/ivi-compositor.h index 4da12bc..dab9fa6 100644 --- a/src/ivi-compositor.h +++ b/src/ivi-compositor.h @@ -170,6 +170,7 @@ struct ivi_surface { int32_t x, y; int32_t width, height; } pending; + bool activated_by_default; enum ivi_surface_role role; union { diff --git a/src/layout.c b/src/layout.c index 94327c4..9537034 100644 --- a/src/layout.c +++ b/src/layout.c @@ -251,7 +251,12 @@ ivi_layout_desktop_committed(struct ivi_surface *surf) if (!surf->ivi->quirks.activate_apps_by_default) return; + skip_config_check: + /* we can only activate it again by using the protocol */ + if (surf->activated_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 @@ -259,8 +264,10 @@ skip_config_check: if (surf->view && ivi_bg_output) { const char *app_id = weston_desktop_surface_get_app_id(dsurf); - if (app_id && ivi_bg_output) + if (app_id && ivi_bg_output) { ivi_layout_activate(ivi_bg_output, app_id); + surf->activated_by_default = true; + } } return; |