diff --git a/src/backends/meta-egl.c b/src/backends/meta-egl.c index 866bf2dc2..17c3c5e49 100644 --- a/src/backends/meta-egl.c +++ b/src/backends/meta-egl.c @@ -46,6 +46,7 @@ struct _MetaEgl PFNEGLCREATEIMAGEKHRPROC eglCreateImageKHR; PFNEGLDESTROYIMAGEKHRPROC eglDestroyImageKHR; + PFNEGLBINDWAYLANDDISPLAYWL eglBindWaylandDisplayWL; PFNEGLQUERYWAYLANDBUFFERWL eglQueryWaylandBufferWL; PFNEGLQUERYDEVICESEXTPROC eglQueryDevicesEXT; @@ -699,6 +700,24 @@ meta_egl_swap_buffers (MetaEgl *egl, return TRUE; } +gboolean +meta_egl_bind_wayland_display (MetaEgl *egl, + EGLDisplay display, + struct wl_display *wayland_display, + GError **error) +{ + if (!is_egl_proc_valid (egl->eglBindWaylandDisplayWL, error)) + return FALSE; + + if (!egl->eglBindWaylandDisplayWL (display, wayland_display)) + { + set_egl_error (error); + return FALSE; + } + + return TRUE; +} + gboolean meta_egl_query_wayland_buffer (MetaEgl *egl, EGLDisplay display, @@ -1077,6 +1096,7 @@ meta_egl_constructed (GObject *object) GET_EGL_PROC_ADDR (eglCreateImageKHR); GET_EGL_PROC_ADDR (eglDestroyImageKHR); + GET_EGL_PROC_ADDR (eglBindWaylandDisplayWL); GET_EGL_PROC_ADDR (eglQueryWaylandBufferWL); GET_EGL_PROC_ADDR (eglQueryDevicesEXT); diff --git a/src/backends/meta-egl.h b/src/backends/meta-egl.h index 4591e7d85..fa7741a67 100644 --- a/src/backends/meta-egl.h +++ b/src/backends/meta-egl.h @@ -154,6 +154,11 @@ gboolean meta_egl_swap_buffers (MetaEgl *egl, EGLSurface surface, GError **error); +gboolean meta_egl_bind_wayland_display (MetaEgl *egl, + EGLDisplay display, + struct wl_display *wayland_display, + GError **error); + gboolean meta_egl_query_wayland_buffer (MetaEgl *egl, EGLDisplay display, struct wl_resource *buffer,