From ba9b65aa89951b8d1a008b162ed0199008484d4c Mon Sep 17 00:00:00 2001 From: Marius Vlad Date: Fri, 5 Jun 2020 15:27:31 +0300 Subject: 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 --- src/shell.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) 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; -- cgit 1.2.3-korg