X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fdesktop.c;h=0f1da18bb1c0d8f07b94301668df93f110e2b398;hb=76fa1b83638310c23bf3ca952e4479499b8ecb43;hp=37f42223c7ebfb519a1ba048e81ed89d65896866;hpb=b92397ef12626a0d09cb4c9e853d0c038104110f;p=src%2Fagl-compositor.git diff --git a/src/desktop.c b/src/desktop.c index 37f4222..0f1da18 100644 --- a/src/desktop.c +++ b/src/desktop.c @@ -289,8 +289,9 @@ desktop_surface_removed(struct weston_desktop_surface *dsurface, void *userdata) * the DESKTOP role can happen here as well, because we can fall-back * to that when we try to determine the role type. Application that * do not set the app_id will be land here, when destroyed */ - if (output == NULL && (surface->role == IVI_SURFACE_ROLE_NONE || - surface->role == IVI_SURFACE_ROLE_DESKTOP)) + if ((output == NULL && (surface->role == IVI_SURFACE_ROLE_NONE || + surface->role == IVI_SURFACE_ROLE_DESKTOP)) || + output->output == NULL) goto skip_output_asignment; assert(output != NULL); @@ -366,9 +367,12 @@ skip_output_asignment: weston_log("Removed surface %p, app_id %s, role %s\n", surface, app_id, ivi_layout_get_surface_role_name(surface)); - if (app_id && output) + if (app_id && output && output->output) { shell_advertise_app_state(output->ivi, app_id, NULL, AGL_SHELL_DESKTOP_APP_STATE_DESTROYED); + if (output->ivi->shell_client.ready) + shell_send_app_state(output->ivi, app_id, AGL_SHELL_APP_STATE_TERMINATED); + } wl_list_remove(&surface->link); @@ -396,6 +400,11 @@ desktop_committed(struct weston_desktop_surface *dsurface, wl_list_init(&surface->link); ivi_check_pending_desktop_surface(surface); surface->checked_pending = true; + + /* we'll do it now at commit time, because we might not have an + * appid by the time we've created the weston_desktop_surface + * */ + shell_send_app_state(ivi, app_id, AGL_SHELL_APP_STATE_STARTED); } if (!surface->advertised_on_launch &&