event
With the introduction of the events that notify regular applications
of others' application state we require some way of controlling that.
This patch adds another hook for controlling just that.
Bug-AGL: SPEC-3269
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I2ade01eb5dfa454e360edd2e3943df91975da88f
bool (*surface_deactivate)(struct ivi_surface *surf, void *user_data);
bool (*surface_activate_by_default)(struct ivi_surface *surf, void *user_data);
+ bool (*surface_advertise_state_change)(struct ivi_surface *surf, void *user_data);
/** see also ivi_policy_add(). If set this will be executed before
* adding a new policy rule */
*/
#include "ivi-compositor.h"
+#include "policy.h"
#include <assert.h>
#include <errno.h>
struct desktop_client *dclient;
uint32_t app_role;
struct ivi_surface *surf = ivi_find_app(ivi, app_id);
+ struct ivi_policy *policy = ivi->policy;
/* FIXME: should queue it here and see when binding agl-shell-desktop
* if there are any to be sent */
if (!surf)
return;
+ if (policy && policy->api.surface_advertise_state_change &&
+ !policy->api.surface_advertise_state_change(surf, surf->ivi)) {
+ return;
+ }
+
app_role = surf->role;
if (app_role == IVI_SURFACE_ROLE_POPUP)
app_role = AGL_SHELL_DESKTOP_APP_ROLE_POPUP;