about summary refs log tree commit diff stats
path: root/src/wrapped32
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-10-08 16:20:41 +0200
committerptitSeb <sebastien.chev@gmail.com>2025-10-08 16:20:41 +0200
commita029fca7bdfb656ce0ee103429dc7e71e3c36992 (patch)
tree1fc290ca7a7dfa2a9ced7f8e711cbf48bb40f355 /src/wrapped32
parent3cfe54f8cf7bb3c66b5b95cd3de4865f307b4b5b (diff)
downloadbox64-a029fca7bdfb656ce0ee103429dc7e71e3c36992.tar.gz
box64-a029fca7bdfb656ce0ee103429dc7e71e3c36992.zip
[BOX32][WRAPPER] more 32bits wrapped function to libxrandr
Diffstat (limited to 'src/wrapped32')
-rw-r--r--src/wrapped32/generated/functions_list.txt4
-rw-r--r--src/wrapped32/generated/wrappedlibxrandrtypes32.h3
-rw-r--r--src/wrapped32/generated/wrapper32.c2
-rw-r--r--src/wrapped32/generated/wrapper32.h1
-rw-r--r--src/wrapped32/wrappedlibxrandr.c14
-rw-r--r--src/wrapped32/wrappedlibxrandr_private.h4
6 files changed, 26 insertions, 2 deletions
diff --git a/src/wrapped32/generated/functions_list.txt b/src/wrapped32/generated/functions_list.txt
index cc18d84f..22b7296b 100644
--- a/src/wrapped32/generated/functions_list.txt
+++ b/src/wrapped32/generated/functions_list.txt
@@ -1506,6 +1506,7 @@
 #() pFEXipp -> pFEXipp
 #() pFEXCip -> pFEXCip
 #() pFEXlpp -> pFEXlpp
+#() pFEXLip -> pFEXLip
 #() pFEXpip -> pFEXpip
 #() pFEXppi -> pFEXppi
 #() pFuiupp -> pFuiupp
@@ -3260,6 +3261,7 @@ wrappedlibxi:
   - XGrabDevice
 wrappedlibxrandr:
 - vFp:
+  - XRRFreeMonitors
   - XRRFreeProviderInfo
   - XRRFreeProviderResources
 - iFp:
@@ -3281,6 +3283,8 @@ wrappedlibxrandr:
   - XRRGetProviderInfo
 - iFXpLp:
   - XRRSetPanning
+- pFXLip:
+  - XRRGetMonitors
 - iFXpLLiiLWpi:
   - XRRSetCrtcConfig
 wrappedlibxrender:
diff --git a/src/wrapped32/generated/wrappedlibxrandrtypes32.h b/src/wrapped32/generated/wrappedlibxrandrtypes32.h
index efaa1d1d..f17bd9d9 100644
--- a/src/wrapped32/generated/wrappedlibxrandrtypes32.h
+++ b/src/wrapped32/generated/wrappedlibxrandrtypes32.h
@@ -19,9 +19,11 @@ typedef void* (*pFXLL_t)(void*, uintptr_t, uintptr_t);
 typedef void* (*pFXLp_t)(void*, uintptr_t, void*);
 typedef void* (*pFXpL_t)(void*, void*, uintptr_t);
 typedef int32_t (*iFXpLp_t)(void*, void*, uintptr_t, void*);
+typedef void* (*pFXLip_t)(void*, uintptr_t, int32_t, void*);
 typedef int32_t (*iFXpLLiiLWpi_t)(void*, void*, uintptr_t, uintptr_t, int32_t, int32_t, uintptr_t, uint16_t, void*, int32_t);
 
 #define SUPER() ADDED_FUNCTIONS() \
+	GO(XRRFreeMonitors, vFp_t) \
 	GO(XRRFreeProviderInfo, vFp_t) \
 	GO(XRRFreeProviderResources, vFp_t) \
 	GO(XRRUpdateConfiguration, iFp_t) \
@@ -36,6 +38,7 @@ typedef int32_t (*iFXpLLiiLWpi_t)(void*, void*, uintptr_t, uintptr_t, int32_t, i
 	GO(XRRGetPanning, pFXpL_t) \
 	GO(XRRGetProviderInfo, pFXpL_t) \
 	GO(XRRSetPanning, iFXpLp_t) \
+	GO(XRRGetMonitors, pFXLip_t) \
 	GO(XRRSetCrtcConfig, iFXpLLiiLWpi_t)
 
 #endif // __wrappedlibxrandrTYPES32_H_
diff --git a/src/wrapped32/generated/wrapper32.c b/src/wrapped32/generated/wrapper32.c
index 0139b26b..96413f89 100644
--- a/src/wrapped32/generated/wrapper32.c
+++ b/src/wrapped32/generated/wrapper32.c
@@ -1600,6 +1600,7 @@ typedef void* (*pFEpnup_t)(x64emu_t*, void*, void*, uint32_t, void*);
 typedef void* (*pFEXipp_t)(x64emu_t*, void*, int32_t, void*, void*);
 typedef void* (*pFEXCip_t)(x64emu_t*, void*, uint8_t, int32_t, void*);
 typedef void* (*pFEXlpp_t)(x64emu_t*, void*, intptr_t, void*, void*);
+typedef void* (*pFEXLip_t)(x64emu_t*, void*, uintptr_t, int32_t, void*);
 typedef void* (*pFEXpip_t)(x64emu_t*, void*, void*, int32_t, void*);
 typedef void* (*pFEXppi_t)(x64emu_t*, void*, void*, void*, int32_t);
 typedef void* (*pFuiupp_t)(uint32_t, int32_t, uint32_t, void*, void*);
@@ -3769,6 +3770,7 @@ void pFEpnup_32(x64emu_t *emu, uintptr_t fcn) { pFEpnup_t fn = (pFEpnup_t)fcn; v
 void pFEXipp_32(x64emu_t *emu, uintptr_t fcn) { pFEXipp_t fn = (pFEXipp_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16))); }
 void pFEXCip_32(x64emu_t *emu, uintptr_t fcn) { pFEXCip_t fn = (pFEXCip_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptri(uint8_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16))); }
 void pFEXlpp_32(x64emu_t *emu, uintptr_t fcn) { pFEXlpp_t fn = (pFEXlpp_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_long(from_ptri(long_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16))); }
+void pFEXLip_32(x64emu_t *emu, uintptr_t fcn) { pFEXLip_t fn = (pFEXLip_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16))); }
 void pFEXpip_32(x64emu_t *emu, uintptr_t fcn) { pFEXpip_t fn = (pFEXpip_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16))); }
 void pFEXppi_32(x64emu_t *emu, uintptr_t fcn) { pFEXppi_t fn = (pFEXppi_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16))); }
 void pFuiupp_32(x64emu_t *emu, uintptr_t fcn) { pFuiupp_t fn = (pFuiupp_t)fcn; R_EAX = to_ptrv(fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20))); }
diff --git a/src/wrapped32/generated/wrapper32.h b/src/wrapped32/generated/wrapper32.h
index 59e28768..40fe80a0 100644
--- a/src/wrapped32/generated/wrapper32.h
+++ b/src/wrapped32/generated/wrapper32.h
@@ -1547,6 +1547,7 @@ void pFEpnup_32(x64emu_t *emu, uintptr_t fnc);
 void pFEXipp_32(x64emu_t *emu, uintptr_t fnc);
 void pFEXCip_32(x64emu_t *emu, uintptr_t fnc);
 void pFEXlpp_32(x64emu_t *emu, uintptr_t fnc);
+void pFEXLip_32(x64emu_t *emu, uintptr_t fnc);
 void pFEXpip_32(x64emu_t *emu, uintptr_t fnc);
 void pFEXppi_32(x64emu_t *emu, uintptr_t fnc);
 void pFuiupp_32(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped32/wrappedlibxrandr.c b/src/wrapped32/wrappedlibxrandr.c
index 80079554..dfc60b56 100644
--- a/src/wrapped32/wrappedlibxrandr.c
+++ b/src/wrapped32/wrappedlibxrandr.c
@@ -166,6 +166,20 @@ EXPORT int my32_XRRUpdateConfiguration(x64emu_t* emu, my_XEvent_32_t* evt)
     return my->XRRUpdateConfiguration(&evt_l);
 }
 
+EXPORT void* my32_XRRGetMonitors(x64emu_t* emu, void* dpy, XID window, int get_active, int* nmonitors)
+{
+    void* ret = my->XRRGetMonitors(dpy, window, get_active, nmonitors);
+    return inplace_XRRMonitorInfo_shrink(ret, *nmonitors);
+}
+
+EXPORT void my32_XRRFreeMonitors(x64emu_t* emu, void* monitors)
+{
+    if(!monitors) return;
+    int n = 0;
+    while(((my_XRRMonitorInfo_32_t*)monitors)[n].name) ++n;
+    my->XRRFreeMonitors(inplace_XRRMonitorInfo_enlarge(monitors, n));
+}
+
 #ifdef ANDROID
 #define NEEDED_LIBS "libX11.so", "libXext.so", "libXrender.so"
 #else
diff --git a/src/wrapped32/wrappedlibxrandr_private.h b/src/wrapped32/wrappedlibxrandr_private.h
index a2611c5c..925cdf66 100644
--- a/src/wrapped32/wrappedlibxrandr_private.h
+++ b/src/wrapped32/wrappedlibxrandr_private.h
@@ -68,6 +68,6 @@ GO(XRRDeleteOutputMode, vFXLL)
 GOM(XRRGetOutputInfo, pFEXpL)
 GO(XRRConfigureProviderProperty, vFXLLiiibl_)
 //GO(XRRAllocateMonitor, bLiiiiiiiiibL__FXi)
-//GO(XRRGetMonitors, bLiiiiiiiiibL__FXLip)
+GOM(XRRGetMonitors, pFEXLip)
 //GO(XRRSetMonitor, vFXLbLiiiiiiiiibL__)
-//GO(XRRFreeMonitors, vFbLiiiiiiiiibL__)
+GOM(XRRFreeMonitors, vFEp)