24#define WAYLAND_DYNLOAD_IFACE(symbol) \
25 extern struct wl_interface symbol; \
26 struct wl_interface symbol;
28#undef WAYLAND_DYNLOAD_IFACE
33 const char *paths[] = {
34 "libwayland-client.so.0",
35 "libwayland-client.so",
37 const int paths_num =
sizeof(paths) /
sizeof(*paths);
46#define WAYLAND_DYNLOAD_IFACE(symbol) \
48 const void *symbol_val; \
49 if (!(symbol_val = dynamic_library_find_with_error( \
50 lib, #symbol, paths[path_found], verbose))) { \
53 memcpy(&symbol, symbol_val, sizeof(symbol)); \
56#undef WAYLAND_DYNLOAD_IFACE
58#define WAYLAND_DYNLOAD_FN(symbol) \
59 if (!(wayland_dynload_client.symbol = dynamic_library_find_with_error( \
60 lib, #symbol, paths[path_found], verbose))) \
65#undef WAYLAND_DYNLOAD_FN
79#pragma GCC diagnostic push
80#pragma GCC diagnostic ignored "-Wredundant-decls"
81#define WAYLAND_DYNLOAD_VALIDATE
83#pragma GCC diagnostic pop
void wayland_dynload_client_exit(void)
static DynamicLibrary lib
bool wayland_dynload_client_init(const bool verbose)
struct WaylandDynload_Client wayland_dynload_client
DynamicLibrary dynamic_library_open_array_with_error(const char **paths, const int paths_num, const bool verbose, int *r_path_index)
#define dynamic_library_close(lib)