diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2025-10-18 13:20:31 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2025-10-18 13:20:31 +0200 |
| commit | f2b168e674055e31ec879ff5050c24c39217a2a9 (patch) | |
| tree | fb9e4e63b5e434a1787c454b77d69b5a5ef1eeb5 | |
| parent | bd616a3779f41ebd104c9294134e6a2d269399ce (diff) | |
| download | box64-f2b168e674055e31ec879ff5050c24c39217a2a9.tar.gz box64-f2b168e674055e31ec879ff5050c24c39217a2a9.zip | |
[WRAPPER] Added another Wayland listener (for #3071)
| -rw-r--r-- | src/wrapped/wrappedwaylandclient.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/wrapped/wrappedwaylandclient.c b/src/wrapped/wrappedwaylandclient.c index b4ede22e..8c03eb24 100644 --- a/src/wrapped/wrappedwaylandclient.c +++ b/src/wrapped/wrappedwaylandclient.c @@ -884,6 +884,39 @@ static void* find_wp_fractional_scale_v1_listener_Fct(void* fct) printf_log(LOG_NONE, "Warning, no more slot for wayland-client wp_fractional_scale_v1_listener callback\n"); return NULL; } +// zwp_primary_selection_device_v1_listener ... +typedef struct my_zwp_primary_selection_device_v1_listener_s { + uintptr_t data_offer; //vFppp + uintptr_t selection; //vFppp +} my_zwp_primary_selection_device_v1_listener_t; +#define GO(A) \ +static my_zwp_primary_selection_device_v1_listener_t* ref_zwp_primary_selection_device_v1_listener_##A = NULL; \ +static void my_zwp_primary_selection_device_v1_listener_data_offer_##A(void* a, void* b, void* c) \ +{ \ + RunFunctionFmt(ref_zwp_primary_selection_device_v1_listener_##A->data_offer, "ppp", a, b, c); \ +} \ +static void my_zwp_primary_selection_device_v1_listener_selection_##A(void* a, void* b, void* c) \ +{ \ + RunFunctionFmt(ref_zwp_primary_selection_device_v1_listener_##A->selection, "ppp", a, b, c); \ +} \ +static my_zwp_primary_selection_device_v1_listener_t my_zwp_primary_selection_device_v1_listener_fct_##A = { \ + (uintptr_t)my_zwp_primary_selection_device_v1_listener_data_offer_##A, \ + (uintptr_t)my_zwp_primary_selection_device_v1_listener_selection_##A, \ +}; +SUPER() +#undef GO +static void* find_zwp_primary_selection_device_v1_listener_Fct(void* fct) +{ + if(!fct) return fct; + #define GO(A) if(ref_zwp_primary_selection_device_v1_listener_##A == fct) return &my_zwp_primary_selection_device_v1_listener_fct_##A; + SUPER() + #undef GO + #define GO(A) if(ref_zwp_primary_selection_device_v1_listener_##A == 0) {ref_zwp_primary_selection_device_v1_listener_##A = fct; return &my_zwp_primary_selection_device_v1_listener_fct_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for wayland-client zwp_primary_selection_device_v1_listener callback\n"); + return NULL; +} #undef SUPER @@ -930,6 +963,8 @@ EXPORT int my_wl_proxy_add_listener(x64emu_t* emu, void* proxy, void** l, void* l = find_wl_callback_listener_Fct(l); } else if(!strcmp(proxy_name, "wp_fractional_scale_v1")) { l = find_wp_fractional_scale_v1_listener_Fct(l); + } else if(!strcmp(proxy_name, "zwp_primary_selection_device_v1")) { + l = find_zwp_primary_selection_device_v1_listener_Fct(l); } else printf_log(LOG_INFO, "Error, Wayland-client, add_listener to %s unknown, will crash soon!\n", proxy_name); return my->wl_proxy_add_listener(proxy, l, data); |