diff --git a/clutter/gdk/clutter-backend-gdk.c b/clutter/gdk/clutter-backend-gdk.c index 7f14feb6e..563f85f6b 100644 --- a/clutter/gdk/clutter-backend-gdk.c +++ b/clutter/gdk/clutter-backend-gdk.c @@ -45,10 +45,18 @@ #include #endif +#if defined(GDK_WINDOWING_WAYLAND) && defined(COGL_HAS_EGL_PLATFORM_WAYLAND_SUPPORT) +#include +#endif + #ifdef GDK_WINDOWING_X11 #include #endif +#ifdef GDK_WINDOWING_WAYLAND +#include +#endif + #ifdef GDK_WINDOWING_WIN32 #include #endif @@ -275,6 +283,17 @@ clutter_backend_gdk_get_renderer (ClutterBackend *backend, } else #endif +#if defined(GDK_WINDOWING_WAYLAND) && defined(COGL_HAS_EGL_PLATFORM_WAYLAND_SUPPORT) + if (GDK_IS_WAYLAND_DISPLAY (backend_gdk->display)) + { + struct wl_display *display = gdk_wayland_display_get_wl_display (backend_gdk->display); + + /* Force a Wayland winsys */ + cogl_renderer_set_winsys_id (renderer, COGL_WINSYS_ID_EGL_WAYLAND); + cogl_wayland_renderer_set_foreign_display (renderer, display); + } + else +#endif #if defined(GDK_WINDOWING_WIN32) if (GDK_IS_WIN32_DISPLAY (backend_gdk->display)) {