diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-10-08 19:44:20 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-10-08 19:44:20 +0200 |
| commit | c12f8fa2544dbcfb29416f39f784abefef276ccb (patch) | |
| tree | 0aabd275027832647d282e061ce6827d72beae6e /src/wrapped32 | |
| parent | 7ae36b8667f9ff213c3461a3c7d49978d8d71e4d (diff) | |
| download | box64-c12f8fa2544dbcfb29416f39f784abefef276ccb.tar.gz box64-c12f8fa2544dbcfb29416f39f784abefef276ccb.zip | |
[BOX32] Fixed some X11 function so wine launch (and added BOX64_X11SYNC to help debug X11 programs)
Diffstat (limited to 'src/wrapped32')
| -rw-r--r-- | src/wrapped32/generated/functions_list.txt | 7 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrappedlibx11types32.h | 5 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrapper32.c | 4 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrapper32.h | 2 | ||||
| -rw-r--r-- | src/wrapped32/wrappedlibx11.c | 24 | ||||
| -rw-r--r-- | src/wrapped32/wrappedlibx11_private.h | 6 |
6 files changed, 41 insertions, 7 deletions
diff --git a/src/wrapped32/generated/functions_list.txt b/src/wrapped32/generated/functions_list.txt index 7a0c8a40..3eeee705 100644 --- a/src/wrapped32/generated/functions_list.txt +++ b/src/wrapped32/generated/functions_list.txt @@ -863,7 +863,6 @@ #() LFpLpriiiiiiiiilt_ -> LFpLpB #() iFXipBWWWWWWWWWuip_ -> iFXipB #() iFXLbLWWWcc_bLWWWcc_ -> iFXLBB -#() iFXLLbLLLLiiiLLilliLL_ -> iFXLLB #() iFpruuipWCCp_buuipWCCp_i -> iFpBBi #() iFXpLbiLLLiiiiiiiLLiiLiiiiLic_ -> iFXpLB #() pFXLLbiLLLiiiiiiiLLiiLiiiiLic_ -> pFXLLB @@ -979,6 +978,7 @@ #() iFEXipp -> iFEXipp #() iFEXLip -> iFEXLip #() iFEXLlp -> iFEXLlp +#() iFEXLLp -> iFEXLLp #() iFEXLpi -> iFEXLpi #() iFEXpLp -> iFEXpLp #() iFEXppu -> iFEXppu @@ -1998,11 +1998,14 @@ wrappedlibx11: - XSetIOErrorHandler - pFX: - XGetModifierMapping +- XFp: + - XOpenDisplay - vFXp: - XFreeEventData - iFpL: - XFilterEvent - iFXp: + - XFreeFont - XGetEventData - XNextEvent - XPeekEvent @@ -2044,6 +2047,8 @@ wrappedlibx11: - XCheckTypedWindowEvent - iFXLlp: - XCheckWindowEvent +- iFXLLp: + - XChangeWindowAttributes - iFXLpi: - XQueryColors - XSetWMProtocols diff --git a/src/wrapped32/generated/wrappedlibx11types32.h b/src/wrapped32/generated/wrappedlibx11types32.h index b5974d1b..5d4f92e3 100644 --- a/src/wrapped32/generated/wrappedlibx11types32.h +++ b/src/wrapped32/generated/wrappedlibx11types32.h @@ -16,6 +16,7 @@ typedef int32_t (*iFp_t)(void*); typedef int32_t (*iFX_t)(void*); typedef void* (*pFp_t)(void*); typedef void* (*pFX_t)(void*); +typedef void* (*XFp_t)(void*); typedef void (*vFXp_t)(void*, void*); typedef int32_t (*iFpL_t)(void*, uintptr_t); typedef int32_t (*iFXp_t)(void*, void*); @@ -35,6 +36,7 @@ typedef void* (*pFXip_t)(void*, int32_t, void*); typedef int32_t (*iFpLlp_t)(void*, uintptr_t, intptr_t, void*); typedef int32_t (*iFXLip_t)(void*, uintptr_t, int32_t, void*); typedef int32_t (*iFXLlp_t)(void*, uintptr_t, intptr_t, void*); +typedef int32_t (*iFXLLp_t)(void*, uintptr_t, uintptr_t, void*); typedef int32_t (*iFXLpi_t)(void*, uintptr_t, void*, int32_t); typedef int32_t (*iFXppp_t)(void*, void*, void*, void*); typedef void* (*pFXlpp_t)(void*, intptr_t, void*, void*); @@ -70,8 +72,10 @@ typedef uintptr_t (*LFXLiiuuuiupLp_t)(void*, uintptr_t, int32_t, int32_t, uint32 GO(XSetErrorHandler, pFp_t) \ GO(XSetIOErrorHandler, pFp_t) \ GO(XGetModifierMapping, pFX_t) \ + GO(XOpenDisplay, XFp_t) \ GO(XFreeEventData, vFXp_t) \ GO(XFilterEvent, iFpL_t) \ + GO(XFreeFont, iFXp_t) \ GO(XGetEventData, iFXp_t) \ GO(XNextEvent, iFXp_t) \ GO(XPeekEvent, iFXp_t) \ @@ -97,6 +101,7 @@ typedef uintptr_t (*LFXLiiuuuiupLp_t)(void*, uintptr_t, int32_t, int32_t, uint32 GO(XWindowEvent, iFpLlp_t) \ GO(XCheckTypedWindowEvent, iFXLip_t) \ GO(XCheckWindowEvent, iFXLlp_t) \ + GO(XChangeWindowAttributes, iFXLLp_t) \ GO(XQueryColors, iFXLpi_t) \ GO(XSetWMProtocols, iFXLpi_t) \ GO(XCheckIfEvent, iFXppp_t) \ diff --git a/src/wrapped32/generated/wrapper32.c b/src/wrapped32/generated/wrapper32.c index 8d79bb7f..0a4dbe75 100644 --- a/src/wrapped32/generated/wrapper32.c +++ b/src/wrapped32/generated/wrapper32.c @@ -953,7 +953,6 @@ typedef int32_t (*iFXLbLLLLLLLLLL_L_t)(void*, uintptr_t, struct_LLLLLLLLLL_t*, u typedef uintptr_t (*LFpLpriiiiiiiiilt__t)(void*, uintptr_t, void*, struct_iiiiiiiiilt_t*); typedef int32_t (*iFXipBWWWWWWWWWuip__t)(void*, int32_t, void*, struct_WWWWWWWWWuip_t*); typedef int32_t (*iFXLbLWWWcc_bLWWWcc__t)(void*, uintptr_t, struct_LWWWcc_t*, struct_LWWWcc_t*); -typedef int32_t (*iFXLLbLLLLiiiLLilliLL__t)(void*, uintptr_t, uintptr_t, struct_LLLLiiiLLilliLL_t*); typedef int32_t (*iFpruuipWCCp_buuipWCCp_i_t)(void*, struct_uuipWCCp_t*, struct_uuipWCCp_t*, int32_t); typedef int32_t (*iFXpLbiLLLiiiiiiiLLiiLiiiiLic__t)(void*, void*, uintptr_t, struct_iLLLiiiiiiiLLiiLiiiiLic_t*); typedef void* (*pFXLLbiLLLiiiiiiiLLiiLiiiiLic__t)(void*, uintptr_t, uintptr_t, struct_iLLLiiiiiiiLLiiLiiiiLic_t*); @@ -1069,6 +1068,7 @@ typedef int32_t (*iFEpppp_t)(x64emu_t*, void*, void*, void*, void*); typedef int32_t (*iFEXipp_t)(x64emu_t*, void*, int32_t, void*, void*); typedef int32_t (*iFEXLip_t)(x64emu_t*, void*, uintptr_t, int32_t, void*); typedef int32_t (*iFEXLlp_t)(x64emu_t*, void*, uintptr_t, intptr_t, void*); +typedef int32_t (*iFEXLLp_t)(x64emu_t*, void*, uintptr_t, uintptr_t, void*); typedef int32_t (*iFEXLpi_t)(x64emu_t*, void*, uintptr_t, void*, int32_t); typedef int32_t (*iFEXpLp_t)(x64emu_t*, void*, void*, uintptr_t, void*); typedef int32_t (*iFEXppu_t)(x64emu_t*, void*, void*, void*, uint32_t); @@ -2436,7 +2436,6 @@ void iFXLbLLLLLLLLLL_L_32(x64emu_t *emu, uintptr_t fcn) { iFXLbLLLLLLLLLL_L_t fn void LFpLpriiiiiiiiilt__32(x64emu_t *emu, uintptr_t fcn) { LFpLpriiiiiiiiilt__t fn = (LFpLpriiiiiiiiilt__t)fcn; struct_iiiiiiiiilt_t arg_16={0}; if (*(ptr_t*)(from_ptr((R_ESP + 16)))) from_struct_iiiiiiiiilt(&arg_16, *(ptr_t*)(from_ptr((R_ESP + 16)))); R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL)); } void iFXipBWWWWWWWWWuip__32(x64emu_t *emu, uintptr_t fcn) { iFXipBWWWWWWWWWuip__t fn = (iFXipBWWWWWWWWWuip__t)fcn; struct_WWWWWWWWWuip_t arg_16={0}; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_WWWWWWWWWuip(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); } void iFXLbLWWWcc_bLWWWcc__32(x64emu_t *emu, uintptr_t fcn) { iFXLbLWWWcc_bLWWWcc__t fn = (iFXLbLWWWcc_bLWWWcc__t)fcn; struct_LWWWcc_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_LWWWcc(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); struct_LWWWcc_t arg_16={0}; if (*(ptr_t*)(from_ptr((R_ESP + 16)))) from_struct_LWWWcc(&arg_16, *(ptr_t*)(from_ptr((R_ESP + 16)))); R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL, *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_LWWWcc(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_LWWWcc(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); } -void iFXLLbLLLLiiiLLilliLL__32(x64emu_t *emu, uintptr_t fcn) { iFXLLbLLLLiiiLLilliLL__t fn = (iFXLLbLLLLiiiLLilliLL__t)fcn; struct_LLLLiiiLLilliLL_t arg_16={0}; if (*(ptr_t*)(from_ptr((R_ESP + 16)))) from_struct_LLLLiiiLLilliLL(&arg_16, *(ptr_t*)(from_ptr((R_ESP + 16)))); R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ulong(from_ptri(ulong_t, R_ESP + 12)), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_LLLLiiiLLilliLL(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); } void iFpruuipWCCp_buuipWCCp_i_32(x64emu_t *emu, uintptr_t fcn) { iFpruuipWCCp_buuipWCCp_i_t fn = (iFpruuipWCCp_buuipWCCp_i_t)fcn; struct_uuipWCCp_t arg_8={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_uuipWCCp(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); struct_uuipWCCp_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_uuipWCCp(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); R_EAX = fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL, from_ptri(int32_t, R_ESP + 16)); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_uuipWCCp(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); } void iFXpLbiLLLiiiiiiiLLiiLiiiiLic__32(x64emu_t *emu, uintptr_t fcn) { iFXpLbiLLLiiiiiiiLLiiLiiiiLic__t fn = (iFXpLbiLLLiiiiiiiLLiiLiiiiLic__t)fcn; struct_iLLLiiiiiiiLLiiLiiiiLic_t arg_16={0}; if (*(ptr_t*)(from_ptr((R_ESP + 16)))) from_struct_iLLLiiiiiiiLLiiLiiiiLic(&arg_16, *(ptr_t*)(from_ptr((R_ESP + 16)))); R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_iLLLiiiiiiiLLiiLiiiiLic(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); } void pFXLLbiLLLiiiiiiiLLiiLiiiiLic__32(x64emu_t *emu, uintptr_t fcn) { pFXLLbiLLLiiiiiiiLLiiLiiiiLic__t fn = (pFXLLbiLLLiiiiiiiLLiiLiiiiLic__t)fcn; struct_iLLLiiiiiiiLLiiLiiiiLic_t arg_16={0}; if (*(ptr_t*)(from_ptr((R_ESP + 16)))) from_struct_iLLLiiiiiiiLLiiLiiiiLic(&arg_16, *(ptr_t*)(from_ptr((R_ESP + 16)))); R_EAX = to_ptrv(fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ulong(from_ptri(ulong_t, R_ESP + 12)), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL)); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_iLLLiiiiiiiLLiiLiiiiLic(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); } @@ -2552,6 +2551,7 @@ void iFEpppp_32(x64emu_t *emu, uintptr_t fcn) { iFEpppp_t fn = (iFEpppp_t)fcn; R void iFEXipp_32(x64emu_t *emu, uintptr_t fcn) { iFEXipp_t fn = (iFEXipp_t)fcn; R_EAX = 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 iFEXLip_32(x64emu_t *emu, uintptr_t fcn) { iFEXLip_t fn = (iFEXLip_t)fcn; R_EAX = 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 iFEXLlp_32(x64emu_t *emu, uintptr_t fcn) { iFEXLlp_t fn = (iFEXLlp_t)fcn; R_EAX = fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_long(from_ptri(long_t, R_ESP + 12)), from_ptriv(R_ESP + 16)); } +void iFEXLLp_32(x64emu_t *emu, uintptr_t fcn) { iFEXLLp_t fn = (iFEXLLp_t)fcn; R_EAX = fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptriv(R_ESP + 16)); } void iFEXLpi_32(x64emu_t *emu, uintptr_t fcn) { iFEXLpi_t fn = (iFEXLpi_t)fcn; R_EAX = fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); } void iFEXpLp_32(x64emu_t *emu, uintptr_t fcn) { iFEXpLp_t fn = (iFEXpLp_t)fcn; R_EAX = fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptriv(R_ESP + 16)); } void iFEXppu_32(x64emu_t *emu, uintptr_t fcn) { iFEXppu_t fn = (iFEXppu_t)fcn; R_EAX = fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(uint32_t, R_ESP + 16)); } diff --git a/src/wrapped32/generated/wrapper32.h b/src/wrapped32/generated/wrapper32.h index 102e3b9f..9412ca8b 100644 --- a/src/wrapped32/generated/wrapper32.h +++ b/src/wrapped32/generated/wrapper32.h @@ -904,7 +904,6 @@ void iFXLbLLLLLLLLLL_L_32(x64emu_t *emu, uintptr_t fnc); void LFpLpriiiiiiiiilt__32(x64emu_t *emu, uintptr_t fnc); void iFXipBWWWWWWWWWuip__32(x64emu_t *emu, uintptr_t fnc); void iFXLbLWWWcc_bLWWWcc__32(x64emu_t *emu, uintptr_t fnc); -void iFXLLbLLLLiiiLLilliLL__32(x64emu_t *emu, uintptr_t fnc); void iFpruuipWCCp_buuipWCCp_i_32(x64emu_t *emu, uintptr_t fnc); void iFXpLbiLLLiiiiiiiLLiiLiiiiLic__32(x64emu_t *emu, uintptr_t fnc); void pFXLLbiLLLiiiiiiiLLiiLiiiiLic__32(x64emu_t *emu, uintptr_t fnc); @@ -1020,6 +1019,7 @@ void iFEpppp_32(x64emu_t *emu, uintptr_t fnc); void iFEXipp_32(x64emu_t *emu, uintptr_t fnc); void iFEXLip_32(x64emu_t *emu, uintptr_t fnc); void iFEXLlp_32(x64emu_t *emu, uintptr_t fnc); +void iFEXLLp_32(x64emu_t *emu, uintptr_t fnc); void iFEXLpi_32(x64emu_t *emu, uintptr_t fnc); void iFEXpLp_32(x64emu_t *emu, uintptr_t fnc); void iFEXppu_32(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped32/wrappedlibx11.c b/src/wrapped32/wrappedlibx11.c index 818c21bd..7f333e94 100644 --- a/src/wrapped32/wrappedlibx11.c +++ b/src/wrapped32/wrappedlibx11.c @@ -1561,6 +1561,13 @@ EXPORT void* my32_XSynchronize(x64emu_t* emu, void* display, int onoff) return reverse_XSynchronizeProcFct(my_lib, my->XSynchronize(display, onoff)); } +EXPORT void* my32_XOpenDisplay(void* name) +{ + void* ret = my->XOpenDisplay(name); + if(ret && box64_x11sync) my->XSynchronize(ret, 1); + return ret; +} + EXPORT int my32_XCloseDisplay(x64emu_t* emu, void* dpy) { int ret = my->XCloseDisplay(dpy); @@ -2027,6 +2034,23 @@ EXPORT int my32_XQueryColors(x64emu_t* emu, void* dpy, XID map, my_XColor_32_t* return ret; } +EXPORT int my32_XFreeFont(x64emu_t* emu, void* dpy, void* f) +{ + inplace_XFontStruct_enlarge(f); + return my->XFreeFont(dpy, f); +} + +EXPORT int my32_XChangeWindowAttributes(x64emu_t* emu, void* dpy, XID window, unsigned long mask, my_XSetWindowAttributes_32_t* attrs) +{ + my_XSetWindowAttributes_t attrs_l[32]; + for(int i=0, j=0; i<32; ++i) + if(mask&(1<<i)) { + convert_XSetWindowAttributes_to_64(attrs_l+j, attrs+j); + ++j; + } + return my->XChangeWindowAttributes(dpy, window, mask, attrs_l); +} + #define CUSTOM_INIT \ AddAutomaticBridge(lib->w.bridge, vFp_32, *(void**)dlsym(lib->w.lib, "_XLockMutex_fn"), 0, "_XLockMutex_fn"); \ AddAutomaticBridge(lib->w.bridge, vFp_32, *(void**)dlsym(lib->w.lib, "_XUnlockMutex_fn"), 0, "_XUnlockMutex_fn"); \ diff --git a/src/wrapped32/wrappedlibx11_private.h b/src/wrapped32/wrappedlibx11_private.h index fc0c7a17..43da3bf4 100644 --- a/src/wrapped32/wrappedlibx11_private.h +++ b/src/wrapped32/wrappedlibx11_private.h @@ -48,7 +48,7 @@ GO(XChangeKeyboardMapping, iFXiibL_i) GO(XChangePointerControl, iFXiiiii) GOM(XChangeProperty, iFEXLLLiipi) GO(XChangeSaveSet, iFXLi) -GO(XChangeWindowAttributes, iFXLLbLLLLiiiLLilliLL_) +GOM(XChangeWindowAttributes, iFEXLLp) GOM(XCheckIfEvent, iFEXppp) //GO(XCheckMaskEvent, iFplp) GOM(XCheckTypedEvent, iFEXip) @@ -351,7 +351,7 @@ GO(_XFreeEventCookies, vFX) GOM(XFreeEventData, vFEXp) //GOM(_XFreeExtData, iFEp) GOM(XFreeExtensionList, iFEp) -GO(XFreeFont, iFXp) +GOM(XFreeFont, iFEXp) //GO(XFreeFontInfo, iFppi) //GO(XFreeFontNames, iFbp_) //GO(XFreeFontPath, iFbp_) @@ -935,7 +935,7 @@ GO(XOffsetRegion, iFpii) //GO(_XomGetFontDataFromFontSet, //GO(_XomInitConverter, GO(XOMOfOC, pFp) -GO(XOpenDisplay, XFp) +GOM(XOpenDisplay, XFp) //%noE GO(XOpenIM, pFXppp) //GO(_XOpenLC, GO(XOpenOM, pFXppp) |