From: Marius Vlad Date: Thu, 1 Dec 2022 16:37:02 +0000 (+0200) Subject: src: Further hotplug connector fixes X-Git-Tag: 17.90.0~55 X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?p=src%2Fagl-compositor.git;a=commitdiff_plain;h=79eac214d4866d840767b6a430c6168e55a214c0 src: Further hotplug connector fixes Some further checks for the black curtain not being present always when perform hot-plugging operations. Bug-AGL: SPEC-4625 Signed-off-by: Marius Vlad Reported-by: Detlev Casanova Change-Id: Ia7c05e5b90b9e8260f661a8115a93b0d246b9d98 --- diff --git a/src/compositor.c b/src/compositor.c index 7e89926..1f45a71 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -87,7 +87,8 @@ handle_output_destroy(struct wl_listener *listener, void *data) output = wl_container_of(listener, output, output_destroy); assert(output->output == data); - if (output->fullscreen_view.fs->view) { + if (output->fullscreen_view.fs && + output->fullscreen_view.fs->view) { weston_surface_destroy(output->fullscreen_view.fs->view->surface); output->fullscreen_view.fs->view = NULL; } diff --git a/src/shell.c b/src/shell.c index aaf0468..1418d95 100644 --- a/src/shell.c +++ b/src/shell.c @@ -802,7 +802,8 @@ ivi_shell_finalize(struct ivi_compositor *ivi) weston_layer_fini(&ivi->popup); wl_list_for_each(output, &ivi->outputs, link) { - if (output->fullscreen_view.fs->view) { + if (output->fullscreen_view.fs && + output->fullscreen_view.fs->view) { weston_surface_destroy(output->fullscreen_view.fs->view->surface); output->fullscreen_view.fs->view = NULL; } @@ -1097,9 +1098,10 @@ remove_black_curtain(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->fullscreen_view.fs) { weston_log("Output %s doesn't have a surface installed!\n", output->name); return; } @@ -1126,7 +1128,8 @@ insert_black_curtain(struct ivi_output *output) if ((!output && !output->fullscreen_view.fs && - !output->fullscreen_view.fs->view) || !output->output) { + !output->fullscreen_view.fs->view) || !output->output || + !output->fullscreen_view.fs) { weston_log("Output %s doesn't have a surface installed!\n", output->name); return; }