[weston,4/4] desktop-shell: survive NULL output in shell_configure_fullscreen()

Submitted by Fabien Lahoudere on May 2, 2018, 8:21 a.m.

Details

Message ID 1525249318-4746-5-git-send-email-fabien.lahoudere@collabora.com
State Accepted
Headers show
Series "Handle several NULL output pointer" ( rev: 1 ) in Wayland

Not browsing as part of any series.

Commit Message

Fabien Lahoudere May 2, 2018, 8:21 a.m.
From: Pekka Paalanen <pekka.paalanen@collabora.co.uk>

Running 'weston-simple-egl -f -b' (fullscreen, unthrottled) caused a
crash in shell_ensure_fullscreen_black_view() due to
shsurf->fullscreen_output being NULL. Also shell_configure_fullscreen()
could crash on that condition.

Fix shell_configure_fullscreen() to bail out with minimal work if there
is no fullscreen_output.

It is unclear if anything will cause a reconfiguration when an output is
plugged in.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Signed-off-by: Fabien Lahoudere <fabien.lahoudere@collabora.com>
---
 desktop-shell/shell.c | 7 +++++++
 1 file changed, 7 insertions(+)

Patch hide | download patch | download mbox

diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index 1edd37b..b9fa42d 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -2152,6 +2152,13 @@  shell_configure_fullscreen(struct shell_surface *shsurf)
 	weston_layer_entry_insert(&shsurf->shell->fullscreen_layer.view_list,
 				  &shsurf->view->layer_link);
 
+	if (!shsurf->fullscreen_output) {
+		/* If there is no output, there's not much we can do.
+		 * Position the window somwhere, whatever. */
+		weston_view_set_position(shsurf->view, 0, 0);
+		return;
+	}
+
 	shell_ensure_fullscreen_black_view(shsurf);
 
 	surface_subsurfaces_boundingbox(surface, &surf_x, &surf_y,