diff options
-rw-r--r-- | cogl/winsys/cogl-winsys-egl-wayland.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/cogl/winsys/cogl-winsys-egl-wayland.c b/cogl/winsys/cogl-winsys-egl-wayland.c index dad7b1e4..7f4999d0 100644 --- a/cogl/winsys/cogl-winsys-egl-wayland.c +++ b/cogl/winsys/cogl-winsys-egl-wayland.c @@ -279,12 +279,12 @@ _cogl_winsys_renderer_connect (CoglRenderer *renderer, * compostor and shell object. */ wl_display_roundtrip (wayland_renderer->wayland_display); - if (!wayland_renderer->wayland_compositor || !wayland_renderer->wayland_shell) + if (!wayland_renderer->wayland_compositor) { _cogl_set_error (error, COGL_WINSYS_ERROR, COGL_WINSYS_ERROR_INIT, - "Unable to find wl_compositor or wl_shell"); + "Unable to find wl_compositor"); goto error; } @@ -520,9 +520,19 @@ _cogl_winsys_egl_onscreen_init (CoglOnscreen *onscreen, NULL); if (!onscreen->foreign_surface) - wayland_onscreen->wayland_shell_surface = - wl_shell_get_shell_surface (wayland_renderer->wayland_shell, - wayland_onscreen->wayland_surface); + { + if (!wayland_renderer->wayland_shell) + { + _cogl_set_error (error, COGL_WINSYS_ERROR, + COGL_WINSYS_ERROR_CREATE_ONSCREEN, + "No foreign surface, and wl_shell unsupported by the compositor"); + return FALSE; + } + + wayland_onscreen->wayland_shell_surface = + wl_shell_get_shell_surface (wayland_renderer->wayland_shell, + wayland_onscreen->wayland_surface); + } return TRUE; } |