Skip to content

Commit 0053799

Browse files
authored
[WRAPPER] Added more listener wrappers for wayland-client (#3983)
Terraria Linux on Wayland works.
1 parent 95b0208 commit 0053799

1 file changed

Lines changed: 220 additions & 8 deletions

File tree

src/wrapped/wrappedwaylandclient.c

Lines changed: 220 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -142,10 +142,12 @@ static void* find_xdg_surface_listener_Fct(void* fct)
142142
}
143143
// xdg_toplevel_listener ...
144144
typedef struct my_xdg_toplevel_listener_s {
145-
uintptr_t configure; //vFppiip
146-
uintptr_t close; //vFpp
145+
uintptr_t configure; // vFppiip
146+
uintptr_t close; // vFpp
147+
uintptr_t configure_bounds; // vFppii
148+
uintptr_t wm_capabilities; // vFppp
147149
} my_xdg_toplevel_listener_t;
148-
#define GO(A) \
150+
#define GO(A) \
149151
static my_xdg_toplevel_listener_t* ref_xdg_toplevel_listener_##A = NULL; \
150152
static void my_xdg_toplevel_listener_configure_##A(void* a, void* b, int c, int d, void* e) \
151153
{ \
@@ -155,9 +157,19 @@ static void my_xdg_toplevel_listener_close_##A(void* a, void* b)
155157
{ \
156158
RunFunctionFmt(ref_xdg_toplevel_listener_##A->close, "pp", a, b); \
157159
} \
160+
static void my_xdg_toplevel_listener_configure_bounds_##A(void* a, void* b, int c, int d) \
161+
{ \
162+
RunFunctionFmt(ref_xdg_toplevel_listener_##A->configure_bounds, "ppii", a, b, c, d); \
163+
} \
164+
static void my_xdg_toplevel_listener_wm_capabilities_##A(void* a, void* b, void* c) \
165+
{ \
166+
RunFunctionFmt(ref_xdg_toplevel_listener_##A->wm_capabilities, "ppp", a, b, c); \
167+
} \
158168
static my_xdg_toplevel_listener_t my_xdg_toplevel_listener_fct_##A = { \
159169
(uintptr_t)my_xdg_toplevel_listener_configure_##A, \
160-
(uintptr_t)my_xdg_toplevel_listener_close_##A \
170+
(uintptr_t)my_xdg_toplevel_listener_close_##A, \
171+
(uintptr_t)my_xdg_toplevel_listener_configure_bounds_##A, \
172+
(uintptr_t)my_xdg_toplevel_listener_wm_capabilities_##A \
161173
};
162174
SUPER()
163175
#undef GO
@@ -832,13 +844,13 @@ static void* find_wl_surface_listener_Fct(void* fct)
832844
}
833845
// wl_callback_listener ...
834846
typedef struct my_wl_callback_listener_s {
835-
uintptr_t done; //vFppp
847+
uintptr_t done; // vFppu
836848
} my_wl_callback_listener_t;
837-
#define GO(A) \
849+
#define GO(A) \
838850
static my_wl_callback_listener_t* ref_wl_callback_listener_##A = NULL; \
839-
static void my_wl_callback_listener_done_##A(void* a, void* b, void* c) \
851+
static void my_wl_callback_listener_done_##A(void* a, void* b, uint32_t c) \
840852
{ \
841-
RunFunctionFmt(ref_wl_callback_listener_##A->done, "ppp", a, b, c); \
853+
RunFunctionFmt(ref_wl_callback_listener_##A->done, "ppu", a, b, c); \
842854
} \
843855
static my_wl_callback_listener_t my_wl_callback_listener_fct_##A = { \
844856
(uintptr_t)my_wl_callback_listener_done_##A, \
@@ -1015,6 +1027,44 @@ static void* find_wp_color_management_output_v1_listener_Fct(void* fct)
10151027
printf_log(LOG_NONE, "Warning, no more slot for wayland-client wp_color_management_output_v1_listener callback\n");
10161028
return NULL;
10171029
}
1030+
// wp_color_management_surface_feedback_v1 ...
1031+
typedef struct my_wp_color_management_surface_feedback_v1_listener_s {
1032+
uintptr_t preferred_changed; // vFppu
1033+
uintptr_t preferred_changed2; // vFppuu
1034+
} my_wp_color_management_surface_feedback_v1_listener_t;
1035+
#define GO(A) \
1036+
static my_wp_color_management_surface_feedback_v1_listener_t* ref_wp_color_management_surface_feedback_v1_listener_##A = NULL; \
1037+
static void my_wp_color_management_surface_feedback_v1_listener_preferred_changed_##A(void* a, void* b, uint32_t c) \
1038+
{ \
1039+
RunFunctionFmt(ref_wp_color_management_surface_feedback_v1_listener_##A->preferred_changed, "ppu", a, b, c); \
1040+
} \
1041+
static void my_wp_color_management_surface_feedback_v1_listener_preferred_changed2_##A(void* a, void* b, uint32_t c, uint32_t d) \
1042+
{ \
1043+
RunFunctionFmt(ref_wp_color_management_surface_feedback_v1_listener_##A->preferred_changed2, "ppuu", a, b, c, d); \
1044+
} \
1045+
static my_wp_color_management_surface_feedback_v1_listener_t my_wp_color_management_surface_feedback_v1_listener_fct_##A = { \
1046+
(uintptr_t)my_wp_color_management_surface_feedback_v1_listener_preferred_changed_##A, \
1047+
(uintptr_t)my_wp_color_management_surface_feedback_v1_listener_preferred_changed2_##A, \
1048+
};
1049+
SUPER()
1050+
#undef GO
1051+
static void* find_wp_color_management_surface_feedback_v1_listener_Fct(void* fct)
1052+
{
1053+
if (!fct) return fct;
1054+
#define GO(A) \
1055+
if (ref_wp_color_management_surface_feedback_v1_listener_##A == fct) return &my_wp_color_management_surface_feedback_v1_listener_fct_##A;
1056+
SUPER()
1057+
#undef GO
1058+
#define GO(A) \
1059+
if (ref_wp_color_management_surface_feedback_v1_listener_##A == 0) { \
1060+
ref_wp_color_management_surface_feedback_v1_listener_##A = fct; \
1061+
return &my_wp_color_management_surface_feedback_v1_listener_fct_##A; \
1062+
}
1063+
SUPER()
1064+
#undef GO
1065+
printf_log(LOG_NONE, "Warning, no more slot for wayland-client wp_color_management_surface_feedback_v1_listener callback\n");
1066+
return NULL;
1067+
}
10181068
// wp_image_description_info_v1 ...
10191069
typedef struct my_wp_image_description_info_v1_listener_s {
10201070
uintptr_t done; // vFpp
@@ -1143,6 +1193,70 @@ static void* find_zxdg_toplevel_decoration_v1_listener_Fct(void* fct)
11431193
printf_log(LOG_NONE, "Warning, no more slot for wayland-client zxdg_toplevel_decoration_v1_listener_listener callback\n");
11441194
return NULL;
11451195
}
1196+
// zxdg_exported_v2 ...
1197+
typedef struct my_zxdg_exported_v2_listener_s {
1198+
uintptr_t handle; // vFppp
1199+
} my_zxdg_exported_v2_listener_t;
1200+
#define GO(A) \
1201+
static my_zxdg_exported_v2_listener_t* ref_zxdg_exported_v2_listener_##A = NULL; \
1202+
static void my_zxdg_exported_v2_listener_handle_##A(void* a, void* b, void* c) \
1203+
{ \
1204+
RunFunctionFmt(ref_zxdg_exported_v2_listener_##A->handle, "ppp", a, b, c); \
1205+
} \
1206+
static my_zxdg_exported_v2_listener_t my_zxdg_exported_v2_listener_fct_##A = { \
1207+
(uintptr_t)my_zxdg_exported_v2_listener_handle_##A, \
1208+
};
1209+
SUPER()
1210+
#undef GO
1211+
static void* find_zxdg_exported_v2_listener_Fct(void* fct)
1212+
{
1213+
if (!fct) return fct;
1214+
#define GO(A) \
1215+
if (ref_zxdg_exported_v2_listener_##A == fct) return &my_zxdg_exported_v2_listener_fct_##A;
1216+
SUPER()
1217+
#undef GO
1218+
#define GO(A) \
1219+
if (ref_zxdg_exported_v2_listener_##A == 0) { \
1220+
ref_zxdg_exported_v2_listener_##A = fct; \
1221+
return &my_zxdg_exported_v2_listener_fct_##A; \
1222+
}
1223+
SUPER()
1224+
#undef GO
1225+
printf_log(LOG_NONE, "Warning, no more slot for wayland-client zxdg_exported_v2_listener callback\n");
1226+
return NULL;
1227+
}
1228+
// zxdg_imported_v2 ...
1229+
typedef struct my_zxdg_imported_v2_listener_s {
1230+
uintptr_t destroyed; // vFpp
1231+
} my_zxdg_imported_v2_listener_t;
1232+
#define GO(A) \
1233+
static my_zxdg_imported_v2_listener_t* ref_zxdg_imported_v2_listener_##A = NULL; \
1234+
static void my_zxdg_imported_v2_listener_destroyed_##A(void* a, void* b) \
1235+
{ \
1236+
RunFunctionFmt(ref_zxdg_imported_v2_listener_##A->destroyed, "pp", a, b); \
1237+
} \
1238+
static my_zxdg_imported_v2_listener_t my_zxdg_imported_v2_listener_fct_##A = { \
1239+
(uintptr_t)my_zxdg_imported_v2_listener_destroyed_##A, \
1240+
};
1241+
SUPER()
1242+
#undef GO
1243+
static void* find_zxdg_imported_v2_listener_Fct(void* fct)
1244+
{
1245+
if (!fct) return fct;
1246+
#define GO(A) \
1247+
if (ref_zxdg_imported_v2_listener_##A == fct) return &my_zxdg_imported_v2_listener_fct_##A;
1248+
SUPER()
1249+
#undef GO
1250+
#define GO(A) \
1251+
if (ref_zxdg_imported_v2_listener_##A == 0) { \
1252+
ref_zxdg_imported_v2_listener_##A = fct; \
1253+
return &my_zxdg_imported_v2_listener_fct_##A; \
1254+
}
1255+
SUPER()
1256+
#undef GO
1257+
printf_log(LOG_NONE, "Warning, no more slot for wayland-client zxdg_imported_v2_listener callback\n");
1258+
return NULL;
1259+
}
11461260
// wp_color_manager_v1 ...
11471261
typedef struct my_wp_color_manager_v1_listener_s {
11481262
uintptr_t supported_intent; // vFppu
@@ -1249,6 +1363,94 @@ static void* find_ext_data_control_device_v1_listener_Fct(void* fct)
12491363
printf_log(LOG_NONE, "Warning, no more slot for wayland-client ext_data_control_device_v1_listener callback\n");
12501364
return NULL;
12511365
}
1366+
// wp_image_description_v1 ...
1367+
typedef struct my_wp_image_description_v1_listener_s {
1368+
uintptr_t failed; // vFppup
1369+
uintptr_t ready; // vFppu
1370+
uintptr_t ready2; // vFppuu
1371+
} my_wp_image_description_v1_listener_t;
1372+
#define GO(A) \
1373+
static my_wp_image_description_v1_listener_t* ref_wp_image_description_v1_listener_##A = NULL; \
1374+
static void my_wp_image_description_v1_listener_failed_##A(void* a, void* b, uint32_t c, void* d) \
1375+
{ \
1376+
RunFunctionFmt(ref_wp_image_description_v1_listener_##A->failed, "ppup", a, b, c, d); \
1377+
} \
1378+
static void my_wp_image_description_v1_listener_ready_##A(void* a, void* b, uint32_t c) \
1379+
{ \
1380+
RunFunctionFmt(ref_wp_image_description_v1_listener_##A->ready, "ppu", a, b, c); \
1381+
} \
1382+
static void my_wp_image_description_v1_listener_ready2_##A(void* a, void* b, uint32_t c, uint32_t d) \
1383+
{ \
1384+
RunFunctionFmt(ref_wp_image_description_v1_listener_##A->ready2, "ppuu", a, b, c, d); \
1385+
} \
1386+
static my_wp_image_description_v1_listener_t my_wp_image_description_v1_listener_fct_##A = { \
1387+
(uintptr_t)my_wp_image_description_v1_listener_failed_##A, \
1388+
(uintptr_t)my_wp_image_description_v1_listener_ready_##A, \
1389+
(uintptr_t)my_wp_image_description_v1_listener_ready2_##A, \
1390+
};
1391+
SUPER()
1392+
#undef GO
1393+
static void* find_wp_image_description_v1_listener_Fct(void* fct)
1394+
{
1395+
if (!fct) return fct;
1396+
#define GO(A) \
1397+
if (ref_wp_image_description_v1_listener_##A == fct) return &my_wp_image_description_v1_listener_fct_##A;
1398+
SUPER()
1399+
#undef GO
1400+
#define GO(A) \
1401+
if (ref_wp_image_description_v1_listener_##A == 0) { \
1402+
ref_wp_image_description_v1_listener_##A = fct; \
1403+
return &my_wp_image_description_v1_listener_fct_##A; \
1404+
}
1405+
SUPER()
1406+
#undef GO
1407+
printf_log(LOG_NONE, "Warning, no more slot for wayland-client wp_image_description_v1_listener callback\n");
1408+
return NULL;
1409+
}
1410+
// zwp_pointer_gesture_pinch_v1 ...
1411+
typedef struct my_zwp_pointer_gesture_pinch_v1_listener_s {
1412+
uintptr_t begin; // vFppuuup
1413+
uintptr_t update; // vFppuiiii
1414+
uintptr_t end; // vFppuui
1415+
} my_zwp_pointer_gesture_pinch_v1_listener_t;
1416+
#define GO(A) \
1417+
static my_zwp_pointer_gesture_pinch_v1_listener_t* ref_zwp_pointer_gesture_pinch_v1_listener_##A = NULL; \
1418+
static void my_zwp_pointer_gesture_pinch_v1_listener_begin_##A(void* a, void* b, uint32_t c, uint32_t d, void* e, uint32_t f) \
1419+
{ \
1420+
RunFunctionFmt(ref_zwp_pointer_gesture_pinch_v1_listener_##A->begin, "ppuuup", a, b, c, d, e, f); \
1421+
} \
1422+
static void my_zwp_pointer_gesture_pinch_v1_listener_update_##A(void* a, void* b, uint32_t c, int32_t d, int32_t e, int32_t f, int32_t g) \
1423+
{ \
1424+
RunFunctionFmt(ref_zwp_pointer_gesture_pinch_v1_listener_##A->update, "ppuiiii", a, b, c, d, e, f, g); \
1425+
} \
1426+
static void my_zwp_pointer_gesture_pinch_v1_listener_end_##A(void* a, void* b, uint32_t c, uint32_t d, int32_t e) \
1427+
{ \
1428+
RunFunctionFmt(ref_zwp_pointer_gesture_pinch_v1_listener_##A->end, "ppuui", a, b, c, d, e); \
1429+
} \
1430+
static my_zwp_pointer_gesture_pinch_v1_listener_t my_zwp_pointer_gesture_pinch_v1_listener_fct_##A = { \
1431+
(uintptr_t)my_zwp_pointer_gesture_pinch_v1_listener_begin_##A, \
1432+
(uintptr_t)my_zwp_pointer_gesture_pinch_v1_listener_update_##A, \
1433+
(uintptr_t)my_zwp_pointer_gesture_pinch_v1_listener_end_##A, \
1434+
};
1435+
SUPER()
1436+
#undef GO
1437+
static void* find_zwp_pointer_gesture_pinch_v1_listener_Fct(void* fct)
1438+
{
1439+
if (!fct) return fct;
1440+
#define GO(A) \
1441+
if (ref_zwp_pointer_gesture_pinch_v1_listener_##A == fct) return &my_zwp_pointer_gesture_pinch_v1_listener_fct_##A;
1442+
SUPER()
1443+
#undef GO
1444+
#define GO(A) \
1445+
if (ref_zwp_pointer_gesture_pinch_v1_listener_##A == 0) { \
1446+
ref_zwp_pointer_gesture_pinch_v1_listener_##A = fct; \
1447+
return &my_zwp_pointer_gesture_pinch_v1_listener_fct_##A; \
1448+
}
1449+
SUPER()
1450+
#undef GO
1451+
printf_log(LOG_NONE, "Warning, no more slot for wayland-client zwp_pointer_gesture_pinch_v1_listener callback\n");
1452+
return NULL;
1453+
}
12521454
#undef SUPER
12531455

12541456
EXPORT int my_wl_proxy_add_listener(x64emu_t* emu, void* proxy, void** l, void* data)
@@ -1303,14 +1505,24 @@ EXPORT int my_wl_proxy_add_listener(x64emu_t* emu, void* proxy, void** l, void*
13031505
l = find_zwp_primary_selection_offer_v1_listener_Fct(l);
13041506
} else if (!strcmp(proxy_name, "wp_color_management_output_v1")) {
13051507
l = find_wp_color_management_output_v1_listener_Fct(l);
1508+
} else if (!strcmp(proxy_name, "wp_color_management_surface_feedback_v1")) {
1509+
l = find_wp_color_management_surface_feedback_v1_listener_Fct(l);
13061510
} else if (!strcmp(proxy_name, "wp_image_description_info_v1")) {
13071511
l = find_wp_image_description_info_v1_listener_Fct(l);
13081512
} else if (!strcmp(proxy_name, "zxdg_toplevel_decoration_v1")) {
13091513
l = find_zxdg_toplevel_decoration_v1_listener_Fct(l);
1514+
} else if (!strcmp(proxy_name, "zxdg_exported_v2")) {
1515+
l = find_zxdg_exported_v2_listener_Fct(l);
1516+
} else if (!strcmp(proxy_name, "zxdg_imported_v2")) {
1517+
l = find_zxdg_imported_v2_listener_Fct(l);
13101518
} else if (!strcmp(proxy_name, "wp_color_manager_v1")) {
13111519
l = find_wp_color_manager_v1_listener_Fct(l);
13121520
} else if (!strcmp(proxy_name, "ext_data_control_device_v1")) {
13131521
l = find_ext_data_control_device_v1_listener_Fct(l);
1522+
} else if (!strcmp(proxy_name, "wp_image_description_v1")) {
1523+
l = find_wp_image_description_v1_listener_Fct(l);
1524+
} else if (!strcmp(proxy_name, "zwp_pointer_gesture_pinch_v1")) {
1525+
l = find_zwp_pointer_gesture_pinch_v1_listener_Fct(l);
13141526
} else
13151527
printf_log(LOG_INFO, "Error, Wayland-client, add_listener to %s unknown, will crash soon!\n", proxy_name);
13161528
return my->wl_proxy_add_listener(proxy, l, data);

0 commit comments

Comments
 (0)