X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fshell.c;h=68227c317f0041904087e771acf54eddf3c2b33f;hb=refs%2Fheads%2Foctopus;hp=640cc73a79e25c6b4ba8ad4cc0fdf3f4b5f1fdd2;hpb=4003cfb04b7bae04c321b274b4e1bfae1222a327;p=src%2Fagl-compositor.git diff --git a/src/shell.c b/src/shell.c index 640cc73..68227c3 100644 --- a/src/shell.c +++ b/src/shell.c @@ -1088,7 +1088,8 @@ create_black_curtain_view(struct ivi_output *output) bool output_has_black_curtain(struct ivi_output *output) { - return (output->fullscreen_view.fs->view && + return (output->fullscreen_view.fs && + output->fullscreen_view.fs->view && output->fullscreen_view.fs->view->is_mapped && output->fullscreen_view.fs->view->surface->is_mapped); } @@ -1409,10 +1410,20 @@ shell_activate_app(struct wl_client *client, const char *app_id, struct wl_resource *output_res) { - struct weston_head *head = weston_head_from_resource(output_res); - struct weston_output *woutput = weston_head_get_output(head); - struct ivi_compositor *ivi = wl_resource_get_user_data(shell_res); - struct ivi_output *output = to_ivi_output(woutput); + struct weston_head *head; + struct weston_output *woutput; + struct ivi_compositor *ivi; + struct ivi_output *output; + + head = weston_head_from_resource(output_res); + if (!head) { + weston_log("Invalid output to activate '%s' on\n", app_id); + return; + } + + woutput = weston_head_get_output(head); + ivi = wl_resource_get_user_data(shell_res); + output = to_ivi_output(woutput); if (wl_resource_get_version(shell_res) >= AGL_SHELL_BOUND_OK_SINCE_VERSION && @@ -1611,18 +1622,20 @@ unbind_agl_shell(struct wl_resource *resource) } wl_list_for_each(output, &ivi->outputs, link) { - struct weston_geometry area = {}; /* reset the active surf if there's one present */ if (output->active) { + struct weston_geometry area = {}; + output->active->view->is_mapped = false; output->active->view->surface->is_mapped = false; weston_layer_entry_remove(&output->active->view->layer_link); output->active = NULL; + + output->area_activation = area; } - output->area_activation = area; insert_black_curtain(output); }