about summary refs log tree commit diff stats
path: root/src/wrapped/wrappedwaylandclient.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/wrapped/wrappedwaylandclient.c')
-rw-r--r--src/wrapped/wrappedwaylandclient.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/wrapped/wrappedwaylandclient.c b/src/wrapped/wrappedwaylandclient.c
index c1570cf2..2ecac23c 100644
--- a/src/wrapped/wrappedwaylandclient.c
+++ b/src/wrapped/wrappedwaylandclient.c
@@ -21,4 +21,41 @@
 const char* waylandclientName = "libwayland-client.so.0";
 #define LIBNAME waylandclient
 
+static void AutoBridgeInterfaces(void* lib, bridge_t* bridge)
+{
+    // creates bridges for the various interfaces of this libs...
+    void** p = NULL;
+    p = dlsym(lib, "wl_buffer_interface");
+    if(p) {
+        AddAutomaticBridge(bridge, vFpp, *p, 0, "wl_buffer_interface_destroy");
+    }
+    p = dlsym(lib, "wl_compositor_interface");
+    if(p) {
+        AddAutomaticBridge(bridge, vFppu, p[0], 0, "wl_compositor_interface_create_surface");
+        AddAutomaticBridge(bridge, vFppu, p[1], 0, "wl_compositor_interface_create_region");
+    }
+    p = dlsym(lib, "wl_display_interface");
+    if(p) {
+        AddAutomaticBridge(bridge, vFppu, p[0], 0, "wl_display_interface_sync");
+        AddAutomaticBridge(bridge, vFppu, p[1], 0, "wl_display_interface_get_registry");
+    }
+    p = dlsym(lib, "wl_keyboard_interface");
+    if(p) {
+        AddAutomaticBridge(bridge, vFpp, *p, 0, "wl_keyboard_interface_release");
+    }
+    p = dlsym(lib, "wl_output_interface");
+    if(p) {
+        AddAutomaticBridge(bridge, vFpp, *p, 0, "wl_output_interface_release");
+    }
+    p = dlsym(lib, "wl_pointer_interface");
+    if(p) {
+        AddAutomaticBridge(bridge, vFppupii, p[0], 0, "wl_pointer_interface_set_cursor");
+        AddAutomaticBridge(bridge, vFppu, p[1], 0, "wl_pointer_interface_release");
+    }
+}
+
+#define CUSTOM_INIT         \
+    AutoBridgeInterfaces(lib->w.lib, lib->w.bridge);
+
 #include "wrappedlib_init.h"
+