X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fpolicy.h;fp=src%2Fpolicy.h;h=bccc5ef8bc0c3881b8997c1e44ace1bb6ca471d8;hb=60e91c02c365355a94441eddc1851babeb440c73;hp=0000000000000000000000000000000000000000;hpb=3b38187d416182306e0533f17a6129a45a168f14;p=src%2Fagl-compositor.git diff --git a/src/policy.h b/src/policy.h new file mode 100644 index 0000000..bccc5ef --- /dev/null +++ b/src/policy.h @@ -0,0 +1,70 @@ +#ifndef POLICY_H +#define POLICY_H + +#include "ivi-compositor.h" +#include "agl-shell-policy-server-protocol.h" + +struct ivi_policy; + +struct state_event { + uint32_t value; + char *name; + struct wl_list link; /* ivi_policy::states or ivi_policy::events */ +}; + +struct ivi_a_policy { + struct ivi_policy *policy; + + char *app_id; + uint32_t state; + uint32_t event; + uint32_t timeout; + struct ivi_output *output; + struct wl_event_source *timer; + + struct wl_list link; /* ivi_policy::ivi_policies */ +}; + +struct ivi_policy_api { + size_t struct_size; + + bool (*surface_create)(struct ivi_surface *surf, void *user_data); + bool (*surface_commited)(struct ivi_surface *surf, void *user_data); + bool (*surface_activate)(struct ivi_surface *surf, void *user_data); + + bool (*policy_rule_allow_to_add)(void *user_data); + void (*policy_rule_try_event)(struct ivi_a_policy *a_policy); +}; + +struct ivi_policy { + struct ivi_compositor *ivi; + struct ivi_policy_api api; + void *user_data; + + /* used to inject policies back to the compositor */ + struct wl_global *policy_shell; + struct wl_resource *resource; + struct wl_list policies; /* ivi_policy_inject::link */ + + uint32_t current_state; + uint32_t previous_state; + bool state_change_in_progress; + + struct wl_list states; /* state_event::link */ + struct wl_list events; /* state_event::link */ + + struct wl_listener listener_check_policies; + struct wl_signal signal_state_change; +}; + + +struct ivi_policy * +ivi_policy_create(struct ivi_compositor *compositor, + const struct ivi_policy_api *api, void *user_data); +void +ivi_policy_destroy(struct ivi_policy *ivi_policy); + +int +ivi_policy_init(struct ivi_compositor *ivi); + +#endif