summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/desktop.c1
-rw-r--r--src/ivi-compositor.h1
-rw-r--r--src/layout.c9
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;