diff options
author | 2022-09-01 15:19:59 +0300 | |
---|---|---|
committer | 2022-09-14 19:42:31 +0300 | |
commit | 0512e7251611e7040c550bb4c6cc972d57b45144 (patch) | |
tree | a7531f55b4688af422277ea48eb07034b4c122ec /src/layout.c | |
parent | bb730ca304a5f62889038cb1bc6509afb869ee95 (diff) |
protocol/agl-shell.xml: Add an app_state event -- app state notification
This protocol bump will notify the client binding to the agl-shell protocol
when a particular application changed its state.
This includes four (4) different events:
- started
- terminated
- activated
- deactivated
This should allow orchestrating start-up with activation as we don't
really know when it would be the proper time to activate an application
when starting up (for the first time). A started event will notify the
shell client we it can do that. These events are not sticky such that
the shell would be responsabile for keep track of the state, if it
wants to.
Bug-AGL: SPEC-4528
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Id162874fa68946bb9b1db9fa356dd617a0db9eb7
Diffstat (limited to 'src/layout.c')
-rw-r--r-- | src/layout.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/layout.c b/src/layout.c index 15858ff..25221e2 100644 --- a/src/layout.c +++ b/src/layout.c @@ -194,6 +194,7 @@ ivi_layout_activate_complete(struct ivi_output *output, struct weston_view *view = surf->view; struct weston_seat *wseat = get_ivi_shell_weston_first_seat(ivi); struct ivi_shell_seat *ivi_seat = get_ivi_shell_seat(wseat); + const char *app_id = weston_desktop_surface_get_app_id(surf->dsurface); if (weston_view_is_mapped(view)) { weston_layer_entry_remove(&view->layer_link); @@ -281,8 +282,13 @@ ivi_layout_activate_complete(struct ivi_output *output, } weston_log("Activation completed for app_id %s, role %s, output %s\n", - weston_desktop_surface_get_app_id(surf->dsurface), + app_id, ivi_layout_get_surface_role_name(surf), output->name); + + if (wl_resource_get_version(ivi->shell_client.resource) >= AGL_SHELL_APP_STATE_SINCE_VERSION) + agl_shell_send_app_state(ivi->shell_client.resource, + app_id, AGL_SHELL_APP_STATE_ACTIVATED); + } struct ivi_output * @@ -1031,4 +1037,8 @@ ivi_layout_deactivate(struct ivi_compositor *ivi, const char *app_id) weston_view_geometry_dirty(view); weston_surface_damage(view->surface); } + + if (wl_resource_get_version(ivi->shell_client.resource) >= AGL_SHELL_APP_STATE_SINCE_VERSION) + agl_shell_send_app_state(ivi->shell_client.resource, app_id, + AGL_SHELL_APP_STATE_DEACTIVATED); } |