desktop-shell: survive NULL output in shell_configure_fullscreen()
authorPekka Paalanen <pekka.paalanen@collabora.co.uk>
Wed, 2 May 2018 08:21:58 +0000 (10:21 +0200)
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>
Thu, 24 May 2018 14:20:04 +0000 (17:20 +0300)
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>
Reviewed-by: Ian Ray <ian.ray@ge.com>
desktop-shell/shell.c

index fb2d5e8..42fc27c 100644 (file)
@@ -2176,6 +2176,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 somewhere, whatever. */
+               weston_view_set_position(shsurf->view, 0, 0);
+               return;
+       }
+
        shell_ensure_fullscreen_black_view(shsurf);
 
        surface_subsurfaces_boundingbox(surface, &surf_x, &surf_y,