1 #include "ivi-compositor.h"
5 * default policy implementation allows every action to be possible
7 * This is an example, that implements the API
9 * - policy_rule_allow_to_add is required in order to add further policy rules
10 * - policy_rule_try_event is a hook that should be implemented in order
11 * for agl-shell-policy to work correctly.
14 ivi_policy_default_surface_create(struct ivi_surface *surf, void *user_data)
16 /* verify that the surface should be created */
21 ivi_policy_default_surface_commmited(struct ivi_surface *surf, void *user_data)
23 /* verify that the surface should be commited */
28 ivi_policy_default_surface_activate(struct ivi_surface *surf, void *user_data)
30 /* verify that the surface shuld be switched to */
35 ivi_policy_default_allow_to_add(void *user_data)
37 /* verify that it can inject events with the protocol */
42 ivi_policy_default_try_event(struct ivi_a_policy *a_policy)
44 uint32_t event = a_policy->event;
47 case AGL_SHELL_POLICY_EVENT_SHOW:
48 ivi_layout_activate(a_policy->output, a_policy->app_id);
50 case AGL_SHELL_POLICY_EVENT_HIDE:
51 /* FIXME: remove the active one, like basically unmap it? */
57 static const struct ivi_policy_api policy_api = {
58 .struct_size = sizeof(policy_api),
59 .surface_create = ivi_policy_default_surface_create,
60 .surface_commited = ivi_policy_default_surface_commmited,
61 .surface_activate = ivi_policy_default_surface_activate,
62 .policy_rule_allow_to_add = ivi_policy_default_allow_to_add,
63 .policy_rule_try_event = ivi_policy_default_try_event,
67 ivi_policy_init(struct ivi_compositor *ivi)
69 ivi->policy = ivi_policy_create(ivi, &policy_api, ivi);