diff --git a/clutter/clutter-backend.c b/clutter/clutter-backend.c index 849365b9b..6142af8e9 100644 --- a/clutter/clutter-backend.c +++ b/clutter/clutter-backend.c @@ -269,6 +269,12 @@ clutter_backend_real_create_context (ClutterBackend *backend, if (backend->cogl_renderer == NULL) goto error; + /* If the application is trying to act as a Wayland compositor then + it needs to have an EGL-based renderer backend */ + if (_wayland_compositor_display) + cogl_renderer_add_constraint (backend->cogl_renderer, + COGL_RENDERER_CONSTRAINT_USES_EGL); + CLUTTER_NOTE (BACKEND, "Connecting the renderer"); if (!cogl_renderer_connect (backend->cogl_renderer, &internal_error)) goto error; diff --git a/clutter/wayland/clutter-backend-wayland.c b/clutter/wayland/clutter-backend-wayland.c index f72937e4f..db5613c68 100644 --- a/clutter/wayland/clutter-backend-wayland.c +++ b/clutter/wayland/clutter-backend-wayland.c @@ -215,6 +215,8 @@ clutter_backend_wayland_get_renderer (ClutterBackend *backend, renderer = cogl_renderer_new (); + cogl_renderer_set_winsys_id (renderer, COGL_WINSYS_ID_EGL_WAYLAND); + cogl_wayland_renderer_set_foreign_display (renderer, backend_wayland->wayland_display); cogl_wayland_renderer_set_foreign_compositor (renderer, diff --git a/clutter/x11/clutter-backend-x11.c b/clutter/x11/clutter-backend-x11.c index acafccbbb..b05a5e8da 100644 --- a/clutter/x11/clutter-backend-x11.c +++ b/clutter/x11/clutter-backend-x11.c @@ -697,6 +697,8 @@ clutter_backend_x11_get_renderer (ClutterBackend *backend, renderer = cogl_renderer_new (); + cogl_renderer_add_constraint (renderer, COGL_RENDERER_CONSTRAINT_USES_X11); + /* set the display object we're using */ cogl_xlib_renderer_set_foreign_display (renderer, xdisplay);