X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fshell.c;h=f8d2e32c58c563d080ef23d44f2d38eea8a13531;hb=0eedfd70b4682a51c81b4b8738ab42f665dc8798;hp=42113994796f5a2cbe0ba1d0d1756d8792c7443f;hpb=8b661b747c67e7af7730d058392980a08ca3f07a;p=src%2Fagl-compositor.git diff --git a/src/shell.c b/src/shell.c index 4211399..f8d2e32 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,22 @@ 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) { + + agl_shell_send_app_state(ivi->shell_client.resource, + app_id, state); + + if (ivi->shell_client_ext.resource) + agl_shell_send_app_state(ivi->shell_client_ext.resource, + app_id, state); + } +} + static void shell_ready(struct wl_client *client, struct wl_resource *shell_res) { @@ -1178,11 +1192,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); } }