diff options
author | 2020-06-05 15:27:31 +0300 | |
---|---|---|
committer | 2020-06-08 23:23:35 +0300 | |
commit | c63ab31076b6e1c710c4d0352884de00dd5765d1 (patch) | |
tree | d8d516ef298d4eb910c06f8b6b76b699da5bfb99 | |
parent | 677b45e1ff759ebf7f63db12eb59f65917537055 (diff) |
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 <marius.vlad@collabora.com>
Change-Id: I4cb94d12cd1e7d907962faaf40e3d295cdfa9245
-rw-r--r-- | src/shell.c | 20 |
1 files 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; |