diff options
-rw-r--r-- | src/compositor.c | 1 | ||||
-rw-r--r-- | src/shell.c | 10 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/compositor.c b/src/compositor.c index 5d8d300..2fb981b 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -86,7 +86,6 @@ handle_output_destroy(struct wl_listener *listener, void *data) output->fullscreen_view.fs->view = NULL; } - weston_layer_fini(&output->ivi->fullscreen); output->output = NULL; wl_list_remove(&output->output_destroy.link); } diff --git a/src/shell.c b/src/shell.c index dc857fc..c6cae10 100644 --- a/src/shell.c +++ b/src/shell.c @@ -782,6 +782,8 @@ ivi_shell_destroy_views_on_layer(struct weston_layer *layer) void ivi_shell_finalize(struct ivi_compositor *ivi) { + struct ivi_output *output; + ivi_shell_destroy_views_on_layer(&ivi->hidden); weston_layer_fini(&ivi->hidden); @@ -796,6 +798,14 @@ ivi_shell_finalize(struct ivi_compositor *ivi) ivi_shell_destroy_views_on_layer(&ivi->popup); weston_layer_fini(&ivi->popup); + + wl_list_for_each(output, &ivi->outputs, link) { + if (output->fullscreen_view.fs->view) { + weston_surface_destroy(output->fullscreen_view.fs->view->surface); + output->fullscreen_view.fs->view = NULL; + } + } + weston_layer_fini(&ivi->fullscreen); } static void |