policy: Add a new policy hook for deactivating apps 03/24403/3
authorMarius Vlad <marius.vlad@collabora.com>
Mon, 20 Apr 2020 16:37:00 +0000 (19:37 +0300)
committerMarius Vlad <marius.vlad@collabora.com>
Tue, 12 May 2020 18:56:35 +0000 (21:56 +0300)
Bug-AGL: SPEC-3269

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I7260626819b78ff7e2a245dc0a5ef566919220f7

src/layout.c
src/policy.h

index 0e7aaaf..6f6c763 100644 (file)
@@ -503,11 +503,17 @@ ivi_layout_deactivate(struct ivi_compositor *ivi, const char *app_id)
 {
        struct ivi_surface *surf;
        struct ivi_output *ivi_output;
+       struct ivi_policy *policy = ivi->policy;
 
        surf = ivi_find_app(ivi, app_id);
        if (!surf)
                return;
 
+       if (policy && policy->api.surface_deactivate &&
+           !policy->api.surface_deactivate(surf, surf->ivi)) {
+               return;
+       }
+
        ivi_output = ivi_layout_get_output_from_surface(surf);
        weston_log("deactiving %s\n", app_id);
 
index 947c326..2499278 100644 (file)
@@ -70,6 +70,7 @@ struct ivi_policy_api {
        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 (*surface_deactivate)(struct ivi_surface *surf, void *user_data);
 
        bool (*surface_activate_by_default)(struct ivi_surface *surf, void *user_data);