From: Marius Vlad Date: Fri, 5 Jun 2020 12:27:31 +0000 (+0300) Subject: shell: Add some extra checks to make sure we don't trip ourselves X-Git-Tag: 9.99.1~15 X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=commitdiff_plain;h=ba9b65aa89951b8d1a008b162ed0199008484d4c;p=src%2Fagl-compositor.git shell: Add some extra checks to make sure we don't trip ourselves Dynamically removing and inserting surfaces on outputs requires making sure the surface is still mapped on that output. Bug-AGL: SPEC-3280 Signed-off-by: Marius Vlad Change-Id: I125f9788718655ee88fa389fb14bd2c36342f8fe --- diff --git a/src/shell.c b/src/shell.c index 6944f8a..3f522ba 100644 --- a/src/shell.c +++ b/src/shell.c @@ -559,8 +559,16 @@ create_black_surface_view(struct ivi_output *output) void remove_black_surface(struct ivi_output *output) { - struct weston_view *view = output->fullscreen_view.fs->view; + struct weston_view *view; + if (!output && + !output->fullscreen_view.fs && + !output->fullscreen_view.fs->view) { + weston_log("Output %s doesn't have a surface installed!\n", output->name); + return; + } + + view = output->fullscreen_view.fs->view; assert(view->is_mapped == true || view->surface->is_mapped == true); @@ -576,8 +584,16 @@ remove_black_surface(struct ivi_output *output) void insert_black_surface(struct ivi_output *output) { - struct weston_view *view = output->fullscreen_view.fs->view; + struct weston_view *view; + if (!output && + !output->fullscreen_view.fs && + !output->fullscreen_view.fs->view) { + weston_log("Output %s doesn't have a surface installed!\n", output->name); + return; + } + + view = output->fullscreen_view.fs->view; if (view->is_mapped || view->surface->is_mapped) return;