diff --git a/ThunkLibs/libwayland-client/Guest.cpp b/ThunkLibs/libwayland-client/Guest.cpp index 24766d7be..9bd250bb5 100644 --- a/ThunkLibs/libwayland-client/Guest.cpp +++ b/ThunkLibs/libwayland-client/Guest.cpp @@ -213,6 +213,23 @@ static void wl_argument_from_va_list(const char *signature, wl_argument *args, } } +extern "C" void wl_proxy_marshal(wl_proxy *proxy, uint32_t opcode, ...) { + wl_argument args[WL_CLOSURE_MAX_ARGS]; + va_list ap; + + va_start(ap, opcode); +#ifdef IS_32BIT_THUNK +// Must extract signature from host due to different data layout on 32-bit +#error Not implemented +#else + wl_argument_from_va_list(((wl_proxy_private*)proxy)->interface->methods[opcode].signature, + args, WL_CLOSURE_MAX_ARGS, ap); +#endif + va_end(ap); + + wl_proxy_marshal_array(proxy, opcode, args); +} + extern "C" wl_proxy *wl_proxy_marshal_flags(wl_proxy *proxy, uint32_t opcode, const wl_interface *interface, uint32_t version, diff --git a/ThunkLibs/libwayland-client/libwayland-client_interface.cpp b/ThunkLibs/libwayland-client/libwayland-client_interface.cpp index feabe895d..7371653bc 100644 --- a/ThunkLibs/libwayland-client/libwayland-client_interface.cpp +++ b/ThunkLibs/libwayland-client/libwayland-client_interface.cpp @@ -12,24 +12,36 @@ struct fex_gen_type {}; template<> struct fex_gen_config : fexgen::custom_guest_entrypoint {}; +template<> struct fex_gen_config {}; template<> struct fex_gen_config {}; -template<> struct fex_gen_config {}; template<> struct fex_gen_config {}; template<> struct fex_gen_config {}; template<> struct fex_gen_config {}; template<> struct fex_gen_config {}; template<> struct fex_gen_config {}; template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; template<> struct fex_gen_config {}; template<> struct fex_gen_config {}; template<> struct fex_gen_config {}; -template<> struct fex_gen_config {}; -template<> struct fex_gen_config : fexgen::custom_host_impl, fexgen::custom_guest_entrypoint {}; -template<> struct fex_gen_config {}; -template<> struct fex_gen_config {}; -template<> struct fex_gen_config {}; + template<> struct fex_gen_config {}; +template<> struct fex_gen_config : fexgen::custom_host_impl, fexgen::custom_guest_entrypoint {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; + +template<> struct fex_gen_config {}; // wl_proxy_marshal_array_flags is only available starting from Wayland 1.19.91 #if WAYLAND_VERSION_MAJOR * 10000 + WAYLAND_VERSION_MINOR * 100 + WAYLAND_VERSION_MICRO >= 11991 template<> struct fex_gen_config {};