X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fshell.c;h=b09c90947274b55db7a9d331a8ba5cc881ca43db;hb=23caf4180436eb45dfcfc5454df9d6137b77cd3d;hp=c884f16e1dc34d3ea60ae418358e43aa47e36372;hpb=bf016d20408920f3ef09894ebb9f237e270267e5;p=src%2Fagl-compositor.git diff --git a/src/shell.c b/src/shell.c index c884f16..b09c909 100644 --- a/src/shell.c +++ b/src/shell.c @@ -45,17 +45,25 @@ static void create_black_surface_view(struct ivi_output *output); -static void +void agl_shell_desktop_advertise_application_id(struct ivi_compositor *ivi, struct ivi_surface *surface) { struct desktop_client *dclient; + if (surface->advertised_on_launch) + return; + /* advertise to all desktop clients the new surface */ wl_list_for_each(dclient, &ivi->desktop_clients, link) { const char *app_id = weston_desktop_surface_get_app_id(surface->dsurface); + if (app_id == NULL) { + weston_log("WARNING app_is is null, unable to advertise\n"); + return; + } agl_shell_desktop_send_application(dclient->resource, app_id); + surface->advertised_on_launch = true; } } @@ -442,6 +450,10 @@ ivi_shell_advertise_xdg_surfaces(struct ivi_compositor *ivi, struct wl_resource wl_list_for_each(surface, &ivi->surfaces, link) { const char *app_id = weston_desktop_surface_get_app_id(surface->dsurface); + if (app_id == NULL) { + weston_log("WARNING app_is is null, unable to advertise\n"); + return; + } agl_shell_desktop_send_application(resource, app_id); } } @@ -569,6 +581,9 @@ create_black_surface_view(struct ivi_output *output) struct weston_compositor *wc= ivi->compositor; struct weston_output *woutput = output->output; + if (!woutput) + return; + surface = weston_surface_create(wc); view = weston_view_create(surface); @@ -616,9 +631,9 @@ insert_black_surface(struct ivi_output *output) { struct weston_view *view; - if (!output && + if ((!output && !output->fullscreen_view.fs && - !output->fullscreen_view.fs->view) { + !output->fullscreen_view.fs->view) || !output->output) { weston_log("Output %s doesn't have a surface installed!\n", output->name); return; } @@ -807,6 +822,9 @@ shell_advertise_app_state(struct ivi_compositor *ivi, const char *app_id, if (!surf) return; + if (!app_id) + return; + if (policy && policy->api.surface_advertise_state_change && !policy->api.surface_advertise_state_change(surf, surf->ivi)) { return;