X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fshell.c;h=d583fe5e96805c0b3a703f7b7784f4d90050fe69;hb=refs%2Fheads%2Fsandbox%2Fmvlad%2Fswitch-to-grpc;hp=42113994796f5a2cbe0ba1d0d1756d8792c7443f;hpb=8b661b747c67e7af7730d058392980a08ca3f07a;p=src%2Fagl-compositor.git diff --git a/src/shell.c b/src/shell.c index 4211399..d583fe5 100644 --- a/src/shell.c +++ b/src/shell.c @@ -986,17 +986,16 @@ process_handle_sigchld(struct weston_process *process, int status) } int -ivi_launch_shell_client(struct ivi_compositor *ivi) +ivi_launch_shell_client(struct ivi_compositor *ivi, const char *cmd_section, + struct wl_client **client) { struct process_info *pinfo; struct weston_config_section *section; char *command = NULL; - section = weston_config_get_section(ivi->config, "shell-client", - NULL, NULL); + section = weston_config_get_section(ivi->config, cmd_section, NULL, NULL); if (section) - weston_config_section_get_string(section, "command", - &command, NULL); + weston_config_section_get_string(section, "command", &command, NULL); if (!command) return -1; @@ -1009,9 +1008,8 @@ ivi_launch_shell_client(struct ivi_compositor *ivi) if (!pinfo->path) goto out_free; - ivi->shell_client.client = client_launch(ivi->compositor, &pinfo->proc, - command, process_handle_sigchld); - if (!ivi->shell_client.client) + *client = client_launch(ivi->compositor, &pinfo->proc, command, process_handle_sigchld); + if (!*client) goto out_str; return 0; @@ -1140,6 +1138,26 @@ insert_black_curtain(struct ivi_output *output) weston_log("Added black curtain to output %s\n", output->output->name); } +void +shell_send_app_state(struct ivi_compositor *ivi, const char *app_id, + enum agl_shell_app_state state) +{ + if (app_id && wl_resource_get_version(ivi->shell_client.resource) >= + AGL_SHELL_APP_STATE_SINCE_VERSION) { + + weston_log("%s() should sent app_state\n", __func__); + agl_shell_send_app_state(ivi->shell_client.resource, + app_id, state); + + if (ivi->shell_client.resource_ext) { + weston_log("%s() 2. should sent app_state %p\n", + __func__, ivi->shell_client.resource_ext); + agl_shell_send_app_state(ivi->shell_client.resource_ext, + app_id, state); + } + } +} + static void shell_ready(struct wl_client *client, struct wl_resource *shell_res) { @@ -1178,11 +1196,7 @@ shell_ready(struct wl_client *client, struct wl_resource *shell_res) surface->checked_pending = true; app_id = weston_desktop_surface_get_app_id(surface->dsurface); - if (app_id && - 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_STARTED); + shell_send_app_state(ivi, app_id, AGL_SHELL_APP_STATE_STARTED); } } @@ -1624,13 +1638,13 @@ bind_agl_shell(struct wl_client *client, wl_resource_set_implementation(resource, &agl_shell_implementation, ivi, NULL); - ivi->shell_client_ext.resource = resource; + ivi->shell_client.resource_ext = resource; if (ivi->shell_client.status == BOUND_OK && wl_resource_get_version(resource) >= AGL_SHELL_BOUND_OK_SINCE_VERSION) { - weston_log("Sent agl_shell_send_bound_ok to client ext\n"); ivi->shell_client_ext.status = BOUND_OK; - agl_shell_send_bound_ok(ivi->shell_client_ext.resource); + agl_shell_send_bound_ok(ivi->shell_client.resource_ext); + weston_log("Sent agl_shell_send_bound_ok to client ext %p\n", ivi->shell_client.resource_ext); } return;