summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarius Vlad <marius.vlad@collabora.com>2020-03-06 22:51:10 +0200
committerMarius Vlad <marius.vlad@collabora.com>2020-03-11 16:44:10 +0200
commit0a932bc7d66b062e6bf9cdbe40a2178ed47dd6c8 (patch)
tree99a1e8c7637981bda0cd8520e444d911a1bc7b2a
parent58a3fe5c2923499160b270c7ef18a8004ee2f537 (diff)
layout: Allow by default to activate the application
Installs, for the default policy, a callback that allows it. Bug-AGL: SPEC-3217 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ic0f1a7db93df480d263db8240592f65a8864ccd6
-rw-r--r--src/layout.c9
-rw-r--r--src/policy-default.c8
2 files changed, 14 insertions, 3 deletions
diff --git a/src/layout.c b/src/layout.c
index b531ed1..94327c4 100644
--- a/src/layout.c
+++ b/src/layout.c
@@ -243,12 +243,15 @@ ivi_layout_desktop_committed(struct ivi_surface *surf)
output = surf->desktop.pending_output;
if (!output) {
struct ivi_output *ivi_bg_output;
+ struct ivi_policy *policy = surf->ivi->policy;
+
+ if (policy && policy->api.surface_activate_by_default)
+ if (policy->api.surface_activate_by_default(surf, surf->ivi))
+ goto skip_config_check;
- /* FIXME: This should be changed to determine if the policy
- * database allows that to happen */
if (!surf->ivi->quirks.activate_apps_by_default)
return;
-
+skip_config_check:
ivi_bg_output = ivi_layout_find_bg_output(surf->ivi);
/* use the output of the bg to activate the app on start-up by
diff --git a/src/policy-default.c b/src/policy-default.c
index 89b858a..bcfee6b 100644
--- a/src/policy-default.c
+++ b/src/policy-default.c
@@ -58,6 +58,13 @@ ivi_policy_default_surface_activate(struct ivi_surface *surf, void *user_data)
}
static bool
+ivi_policy_default_surface_activate_default(struct ivi_surface *surf, void *user_data)
+{
+ /* verify that the surface should be switched to */
+ return true;
+}
+
+static bool
ivi_policy_default_allow_to_add(void *user_data)
{
/* verify that policy rules can be added with ivi_policy_add() */
@@ -89,6 +96,7 @@ static const struct ivi_policy_api policy_api = {
.surface_create = ivi_policy_default_surface_create,
.surface_commited = ivi_policy_default_surface_commmited,
.surface_activate = ivi_policy_default_surface_activate,
+ .surface_activate_by_default = ivi_policy_default_surface_activate_default,
.policy_rule_allow_to_add = ivi_policy_default_allow_to_add,
.policy_rule_try_event = ivi_policy_default_try_event,
};