summaryrefslogtreecommitdiff
path: root/src/common/native.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/native.c')
-rw-r--r--src/common/native.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/common/native.c b/src/common/native.c
index 2d9c06f..6e1c69a 100644
--- a/src/common/native.c
+++ b/src/common/native.c
@@ -1,5 +1,13 @@
#include "backend.h"
+#if YASL_HAS_WAYLAND
+#include "yasl/native/wayland.h"
+#endif
+
+#if YASL_HAS_X11
+#include "yasl/native/x11.h"
+#endif
+
#include <errno.h>
void *yasl_display_get_native_handle(struct yasl_display *d)
@@ -14,6 +22,34 @@ void *yasl_surface_get_native_handle(struct yasl_surface *s)
s->display->ops->surface_get_native_handle(s) : NULL;
}
+#if YASL_HAS_WAYLAND
+struct wl_display *yasl_wayland_display_get_wl_display(struct yasl_display *d)
+{
+ return (d && yasl_display_backend(d) == YASL_BACKEND_WAYLAND) ?
+ (struct wl_display *)yasl_display_get_native_handle(d) : NULL;
+}
+
+struct wl_surface *yasl_wayland_surface_get_wl_surface(struct yasl_surface *s)
+{
+ return (s && s->display && yasl_display_backend(s->display) == YASL_BACKEND_WAYLAND) ?
+ (struct wl_surface *)yasl_surface_get_native_handle(s) : NULL;
+}
+#endif
+
+#if YASL_HAS_X11
+Display *yasl_x11_display_get_display(struct yasl_display *d)
+{
+ return (d && yasl_display_backend(d) == YASL_BACKEND_X11) ?
+ (Display *)yasl_display_get_native_handle(d) : NULL;
+}
+
+uintptr_t yasl_x11_surface_get_window(struct yasl_surface *s)
+{
+ return (s && s->display && yasl_display_backend(s->display) == YASL_BACKEND_X11) ?
+ (uintptr_t)yasl_surface_get_native_handle(s) : 0;
+}
+#endif
+
struct yasl_surface *yasl_surface_create_native(struct yasl_display *d,
const struct yasl_surface_spec *spec, void *graphics_device)
{