mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-29 04:01:27 +01:00
Thunks/wayland: Add more functions required by Super Meat Boy via libdecor and SDL
This commit is contained in:
1 parent
3b188b7f49
commit
8fcf419183
2 files changed
+35
-6
No files matched your search
@@ -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,
|
||||
|
||||
@@ -12,24 +12,36 @@ struct fex_gen_type {};
|
||||
|
||||
template<> struct fex_gen_config<wl_proxy_destroy> : fexgen::custom_guest_entrypoint {};
|
||||
|
||||
template<> struct fex_gen_config<wl_display_cancel_read> {};
|
||||
template<> struct fex_gen_config<wl_display_connect> {};
|
||||
template<> struct fex_gen_config<wl_display_flush> {};
|
||||
template<> struct fex_gen_config<wl_display_create_queue> {};
|
||||
template<> struct fex_gen_config<wl_display_disconnect> {};
|
||||
template<> struct fex_gen_config<wl_display_dispatch> {};
|
||||
template<> struct fex_gen_config<wl_display_dispatch_pending> {};
|
||||
template<> struct fex_gen_config<wl_display_dispatch_queue> {};
|
||||
template<> struct fex_gen_config<wl_display_dispatch_queue_pending> {};
|
||||
template<> struct fex_gen_config<wl_display_flush> {};
|
||||
template<> struct fex_gen_config<wl_display_prepare_read> {};
|
||||
template<> struct fex_gen_config<wl_display_prepare_read_queue> {};
|
||||
template<> struct fex_gen_config<wl_display_read_events> {};
|
||||
template<> struct fex_gen_config<wl_display_roundtrip> {};
|
||||
template<> struct fex_gen_config<wl_display_roundtrip_queue> {};
|
||||
template<> struct fex_gen_config<wl_display_get_fd> {};
|
||||
template<> struct fex_gen_config<wl_proxy_get_version> {};
|
||||
template<> struct fex_gen_config<wl_proxy_add_listener> : fexgen::custom_host_impl, fexgen::custom_guest_entrypoint {};
|
||||
template<> struct fex_gen_config<wl_proxy_create_wrapper> {};
|
||||
template<> struct fex_gen_config<wl_proxy_wrapper_destroy> {};
|
||||
template<> struct fex_gen_config<wl_proxy_set_queue> {};
|
||||
|
||||
template<> struct fex_gen_config<wl_event_queue_destroy> {};
|
||||
|
||||
template<> struct fex_gen_config<wl_proxy_add_listener> : fexgen::custom_host_impl, fexgen::custom_guest_entrypoint {};
|
||||
template<> struct fex_gen_config<wl_proxy_create> {};
|
||||
template<> struct fex_gen_config<wl_proxy_create_wrapper> {};
|
||||
template<> struct fex_gen_config<wl_proxy_get_tag> {};
|
||||
template<> struct fex_gen_config<wl_proxy_get_user_data> {};
|
||||
template<> struct fex_gen_config<wl_proxy_get_version> {};
|
||||
template<> struct fex_gen_config<wl_proxy_set_queue> {};
|
||||
template<> struct fex_gen_config<wl_proxy_set_tag> {};
|
||||
template<> struct fex_gen_config<wl_proxy_set_user_data> {};
|
||||
template<> struct fex_gen_config<wl_proxy_wrapper_destroy> {};
|
||||
|
||||
template<> struct fex_gen_config<wl_proxy_marshal_array> {};
|
||||
// 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<wl_proxy_marshal_array_flags> {};
|
||||
|
||||
Reference in new issue
Block a user