diff --git a/ThunkLibs/libwayland-client/Guest.cpp b/ThunkLibs/libwayland-client/Guest.cpp index 1d16aa86b..5af9b840a 100644 --- a/ThunkLibs/libwayland-client/Guest.cpp +++ b/ThunkLibs/libwayland-client/Guest.cpp @@ -124,6 +124,8 @@ extern "C" int wl_proxy_add_listener(wl_proxy* proxy, void (**callback)(void), v } else if (signature == "ii") { // E.g. xdg_toplevel::configure_bounds host_callbacks[i] = WaylandAllocateHostTrampolineForGuestListener<'i', 'i'>(callback[i]); + } else if (signature == "iu") { + host_callbacks[i] = WaylandAllocateHostTrampolineForGuestListener<'i', 'u'>(callback[i]); } else if (signature == "iia") { // E.g. xdg_toplevel::configure host_callbacks[i] = WaylandAllocateHostTrampolineForGuestListener<'i', 'i', 'a'>(callback[i]); @@ -142,6 +144,8 @@ extern "C" int wl_proxy_add_listener(wl_proxy* proxy, void (**callback)(void), v } else if (signature == "uff") { // E.g. wl_pointer_listener::motion host_callbacks[i] = WaylandAllocateHostTrampolineForGuestListener<'u', 'f', 'f'>(callback[i]); + } else if (signature == "uffff") { + host_callbacks[i] = WaylandAllocateHostTrampolineForGuestListener<'u', 'f', 'f', 'f', 'f'>(callback[i]); } else if (signature == "uhu") { // E.g. wl_keyboard_listener::keymap host_callbacks[i] = WaylandAllocateHostTrampolineForGuestListener<'u', 'h', 'u'>(callback[i]); @@ -154,6 +158,8 @@ extern "C" int wl_proxy_add_listener(wl_proxy* proxy, void (**callback)(void), v } else if (signature == "uiii") { // E.g. wl_output_listener::mode host_callbacks[i] = WaylandAllocateHostTrampolineForGuestListener<'u', 'i', 'i', 'i'>(callback[i]); + } else if (signature == "uiiii") { + host_callbacks[i] = WaylandAllocateHostTrampolineForGuestListener<'u', 'i', 'i', 'i', 'i'>(callback[i]); } else if (signature == "uo") { // E.g. wl_pointer_listener::leave host_callbacks[i] = WaylandAllocateHostTrampolineForGuestListener<'u', 'o'>(callback[i]); @@ -166,6 +172,10 @@ extern "C" int wl_proxy_add_listener(wl_proxy* proxy, void (**callback)(void), v } else if (signature == "uoffo") { // E.g. wl_data_device_listener::enter host_callbacks[i] = WaylandAllocateHostTrampolineForGuestListener<'u', 'o', 'f', 'f', 'o'>(callback[i]); + } else if (signature == "us") { + host_callbacks[i] = WaylandAllocateHostTrampolineForGuestListener<'u', 's'>(callback[i]); + } else if (signature == "uss") { + host_callbacks[i] = WaylandAllocateHostTrampolineForGuestListener<'u', 's', 's'>(callback[i]); } else if (signature == "usu") { // E.g. wl_registry::global host_callbacks[i] = WaylandAllocateHostTrampolineForGuestListener<'u', 's', 'u'>(callback[i]); @@ -181,6 +191,8 @@ extern "C" int wl_proxy_add_listener(wl_proxy* proxy, void (**callback)(void), v } else if (signature == "uuoiff") { // E.g. wl_touch_listener::down host_callbacks[i] = WaylandAllocateHostTrampolineForGuestListener<'u', 'u', 'o', 'i', 'f', 'f'>(callback[i]); + } else if (signature == "uuou") { + host_callbacks[i] = WaylandAllocateHostTrampolineForGuestListener<'u', 'u', 'o', 'u'>(callback[i]); } else if (signature == "uuu") { // E.g. zwp_linux_dmabuf_v1::modifier host_callbacks[i] = WaylandAllocateHostTrampolineForGuestListener<'u', 'u', 'u'>(callback[i]); @@ -193,6 +205,8 @@ extern "C" int wl_proxy_add_listener(wl_proxy* proxy, void (**callback)(void), v } else if (signature == "s") { // E.g. wl_seat::name host_callbacks[i] = WaylandAllocateHostTrampolineForGuestListener<'s'>(callback[i]); + } else if (signature == "ss") { + host_callbacks[i] = WaylandAllocateHostTrampolineForGuestListener<'s', 's'>(callback[i]); } else if (signature == "sii") { // E.g. zwp_text_input_v3::preedit_string host_callbacks[i] = WaylandAllocateHostTrampolineForGuestListener<'s', 'i', 'i'>(callback[i]); diff --git a/ThunkLibs/libwayland-client/Host.cpp b/ThunkLibs/libwayland-client/Host.cpp index 3697d49d7..37aac4587 100644 --- a/ThunkLibs/libwayland-client/Host.cpp +++ b/ThunkLibs/libwayland-client/Host.cpp @@ -352,6 +352,8 @@ fexfn_impl_libwayland_client_wl_proxy_add_listener(struct wl_proxy* proxy, guest } else if (signature == "ii") { // E.g. xdg_toplevel::configure_bounds WaylandFinalizeHostTrampolineForGuestListener<'i', 'i'>(callback); + } else if (signature == "iu") { + WaylandFinalizeHostTrampolineForGuestListener<'i', 'u'>(callback); } else if (signature == "iia") { // E.g. xdg_toplevel::configure FEX::HLE::FinalizeHostTrampolineForGuestFunction((FEX::HLE::HostToGuestTrampolinePtr*)callback, @@ -371,6 +373,8 @@ fexfn_impl_libwayland_client_wl_proxy_add_listener(struct wl_proxy* proxy, guest } else if (signature == "uff") { // E.g. wl_pointer_listener::motion WaylandFinalizeHostTrampolineForGuestListener<'u', 'f', 'f'>(callback); + } else if (signature == "uffff") { + WaylandFinalizeHostTrampolineForGuestListener<'u', 'f', 'f', 'f', 'f'>(callback); } else if (signature == "uhu") { // E.g. wl_keyboard_listener::keymap WaylandFinalizeHostTrampolineForGuestListener<'u', 'h', 'u'>(callback); @@ -383,6 +387,8 @@ fexfn_impl_libwayland_client_wl_proxy_add_listener(struct wl_proxy* proxy, guest } else if (signature == "uiii") { // E.g. wl_output_listener::mode WaylandFinalizeHostTrampolineForGuestListener<'u', 'i', 'i', 'i'>(callback); + } else if (signature == "uiiii") { + WaylandFinalizeHostTrampolineForGuestListener<'u', 'i', 'i', 'i', 'i'>(callback); } else if (signature == "uo") { // E.g. wl_pointer_listener::leave WaylandFinalizeHostTrampolineForGuestListener<'u', 'o'>(callback); @@ -396,6 +402,10 @@ fexfn_impl_libwayland_client_wl_proxy_add_listener(struct wl_proxy* proxy, guest } else if (signature == "uoffo") { // E.g. wl_data_device_listener::enter WaylandFinalizeHostTrampolineForGuestListener<'u', 'o', 'f', 'f', 'o'>(callback); + } else if (signature == "us") { + WaylandFinalizeHostTrampolineForGuestListener<'u', 's'>(callback); + } else if (signature == "uss") { + WaylandFinalizeHostTrampolineForGuestListener<'u', 's', 's'>(callback); } else if (signature == "usu") { // E.g. wl_registry::global WaylandFinalizeHostTrampolineForGuestListener<'u', 's', 'u'>(callback); @@ -411,6 +421,8 @@ fexfn_impl_libwayland_client_wl_proxy_add_listener(struct wl_proxy* proxy, guest } else if (signature == "uuoiff") { // E.g. wl_touch_listener::down WaylandFinalizeHostTrampolineForGuestListener<'u', 'u', 'o', 'i', 'f', 'f'>(callback); + } else if (signature == "uuou") { + WaylandFinalizeHostTrampolineForGuestListener<'u', 'u', 'o', 'u'>(callback); } else if (signature == "uuu") { // E.g. zwp_linux_dmabuf_v1::modifier WaylandFinalizeHostTrampolineForGuestListener<'u', 'u', 'u'>(callback); @@ -426,6 +438,8 @@ fexfn_impl_libwayland_client_wl_proxy_add_listener(struct wl_proxy* proxy, guest } else if (signature == "sii") { // E.g. zwp_text_input_v3::preedit_string WaylandFinalizeHostTrampolineForGuestListener<'s', 'i', 'i'>(callback); + } else if (signature == "ss") { + WaylandFinalizeHostTrampolineForGuestListener<'s', 's'>(callback); } else { fprintf(stderr, "TODO: Unknown wayland event signature descriptor %s\n", signature.data()); std::abort();