[BOX32] Improved again, X11 and XImage handling

This commit is contained in:
ptitSeb 2024-10-09 15:56:07 +02:00
parent 84f3c104b2
commit 05384f581f
7 changed files with 102 additions and 87 deletions

View File

@ -1555,7 +1555,7 @@ EXPORT void* my_XOpenDisplay(x64emu_t* emu, void* d)
if(!ret)
return ret;
if(box64_x11sync) my->XSynchronize(ret, 1);
if(box64_x11sync) {my->XSynchronize(ret, 1); printf_log(LOG_INFO, "Forcing Syncronized opration on Display %p\n", ret);}
bridge_t* system = emu->context->system;
#define GO(A, W)\

View File

@ -837,7 +837,7 @@
#() iFbp_pii -> iFBpii
#() iFbp_pip -> iFBpip
#() iFBp_pui -> iFBpui
#() iFXLibp_ -> iFXLiB
#() iFXLiBp_ -> iFXLiB
#() iFXLbp_i -> iFXLBi
#() iFXLbL_i -> iFXLBi
#() iFXLbp_p -> iFXLBp
@ -865,6 +865,7 @@
#() iFXipBWWWWWWWWWuip_ -> iFXipB
#() iFXLbLWWWcc_bLWWWcc_ -> iFXLBB
#() iFpruuipWCCp_buuipWCCp_i -> iFpBBi
#() iFXpLriLLLiiiiiiiLLiiLiiiiLic_ -> iFXpLB
#() iFXpLbiLLLiiiiiiiLLiiLiiiiLic_ -> iFXpLB
#() pFXLLbiLLLiiiiiiiLLiiLiiiiLic_ -> pFXLLB
#() vFEiipV -> vFEiipV
@ -970,7 +971,6 @@
#() iFEippL -> iFEippL
#() iFEpipp -> iFEpipp
#() iFEpupu -> iFEpupu
#() iFEpLlp -> iFEpLlp
#() iFEpLpp -> iFEpLpp
#() iFEpLpV -> iFEpLpV
#() iFEpplp -> iFEpplp
@ -2042,12 +2042,11 @@ wrappedlibx11:
- XESetCloseDisplay
- XESetEventToWire
- XESetWireToEvent
- iFpLlp:
- XWindowEvent
- iFXLip:
- XCheckTypedWindowEvent
- iFXLlp:
- XCheckWindowEvent
- XWindowEvent
- iFXLLp:
- XChangeWindowAttributes
- iFXLpi:

View File

@ -33,7 +33,6 @@ typedef int32_t (*iFXlp_t)(void*, intptr_t, void*);
typedef int32_t (*iFXLp_t)(void*, uintptr_t, void*);
typedef uintptr_t (*LFXii_t)(void*, int32_t, int32_t);
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*);
@ -98,9 +97,9 @@ typedef uintptr_t (*LFXLiiuuuiupLp_t)(void*, uintptr_t, int32_t, int32_t, uint32
GO(XESetCloseDisplay, pFXip_t) \
GO(XESetEventToWire, pFXip_t) \
GO(XESetWireToEvent, pFXip_t) \
GO(XWindowEvent, iFpLlp_t) \
GO(XCheckTypedWindowEvent, iFXLip_t) \
GO(XCheckWindowEvent, iFXLlp_t) \
GO(XWindowEvent, iFXLlp_t) \
GO(XChangeWindowAttributes, iFXLLp_t) \
GO(XQueryColors, iFXLpi_t) \
GO(XSetWMProtocols, iFXLpi_t) \

View File

@ -927,7 +927,7 @@ typedef int32_t (*iFppbL_p_t)(void*, void*, struct_L_t*, void*);
typedef int32_t (*iFbp_pii_t)(struct_p_t*, void*, int32_t, int32_t);
typedef int32_t (*iFbp_pip_t)(struct_p_t*, void*, int32_t, void*);
typedef int32_t (*iFBp_pui_t)(struct_p_t*, void*, uint32_t, int32_t);
typedef int32_t (*iFXLibp__t)(void*, uintptr_t, int32_t, struct_p_t*);
typedef int32_t (*iFXLiBp__t)(void*, uintptr_t, int32_t, struct_p_t*);
typedef int32_t (*iFXLbp_i_t)(void*, uintptr_t, struct_p_t*, int32_t);
typedef int32_t (*iFXLbL_i_t)(void*, uintptr_t, struct_L_t*, int32_t);
typedef int32_t (*iFXLbp_p_t)(void*, uintptr_t, struct_p_t*, void*);
@ -955,6 +955,7 @@ typedef uintptr_t (*LFpLpriiiiiiiiilt__t)(void*, uintptr_t, void*, struct_iiiiii
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 (*iFpruuipWCCp_buuipWCCp_i_t)(void*, struct_uuipWCCp_t*, struct_uuipWCCp_t*, int32_t);
typedef int32_t (*iFXpLriLLLiiiiiiiLLiiLiiiiLic__t)(void*, void*, uintptr_t, struct_iLLLiiiiiiiLLiiLiiiiLic_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*);
typedef void (*vFEiipV_t)(x64emu_t*, int32_t, int32_t, void*, void*);
@ -1060,7 +1061,6 @@ typedef int32_t (*iFEipii_t)(x64emu_t*, int32_t, void*, int32_t, int32_t);
typedef int32_t (*iFEippL_t)(x64emu_t*, int32_t, void*, void*, uintptr_t);
typedef int32_t (*iFEpipp_t)(x64emu_t*, void*, int32_t, void*, void*);
typedef int32_t (*iFEpupu_t)(x64emu_t*, void*, uint32_t, void*, uint32_t);
typedef int32_t (*iFEpLlp_t)(x64emu_t*, void*, uintptr_t, intptr_t, void*);
typedef int32_t (*iFEpLpp_t)(x64emu_t*, void*, uintptr_t, void*, void*);
typedef int32_t (*iFEpLpV_t)(x64emu_t*, void*, uintptr_t, void*, void*);
typedef int32_t (*iFEpplp_t)(x64emu_t*, void*, void*, intptr_t, void*);
@ -2411,7 +2411,7 @@ void iFppbL_p_32(x64emu_t *emu, uintptr_t fcn) { iFppbL_p_t fn = (iFppbL_p_t)fcn
void iFbp_pii_32(x64emu_t *emu, uintptr_t fcn) { iFbp_pii_t fn = (iFbp_pii_t)fcn; struct_p_t arg_4={0}; if (*(ptr_t*)(from_ptr((R_ESP + 4)))) from_struct_p(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); R_EAX = fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL, from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); }
void iFbp_pip_32(x64emu_t *emu, uintptr_t fcn) { iFbp_pip_t fn = (iFbp_pip_t)fcn; struct_p_t arg_4={0}; if (*(ptr_t*)(from_ptr((R_ESP + 4)))) from_struct_p(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); R_EAX = fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL, from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16)); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); }
void iFBp_pui_32(x64emu_t *emu, uintptr_t fcn) { iFBp_pui_t fn = (iFBp_pui_t)fcn; struct_p_t arg_4={0}; R_EAX = fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL, from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); }
void iFXLibp__32(x64emu_t *emu, uintptr_t fcn) { iFXLibp__t fn = (iFXLibp__t)fcn; struct_p_t arg_16={0}; if (*(ptr_t*)(from_ptr((R_ESP + 16)))) from_struct_p(&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_ptri(int32_t, R_ESP + 12), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); }
void iFXLiBp__32(x64emu_t *emu, uintptr_t fcn) { iFXLiBp__t fn = (iFXLiBp__t)fcn; struct_p_t arg_16={0}; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); }
void iFXLbp_i_32(x64emu_t *emu, uintptr_t fcn) { iFXLbp_i_t fn = (iFXLbp_i_t)fcn; struct_p_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_p(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); 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, from_ptri(int32_t, R_ESP + 16)); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); }
void iFXLbL_i_32(x64emu_t *emu, uintptr_t fcn) { iFXLbL_i_t fn = (iFXLbL_i_t)fcn; struct_L_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_L(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); 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, from_ptri(int32_t, R_ESP + 16)); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); }
void iFXLbp_p_32(x64emu_t *emu, uintptr_t fcn) { iFXLbp_p_t fn = (iFXLbp_p_t)fcn; struct_p_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_p(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); 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, from_ptriv(R_ESP + 16)); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); }
@ -2439,6 +2439,7 @@ void LFpLpriiiiiiiiilt__32(x64emu_t *emu, uintptr_t fcn) { LFpLpriiiiiiiiilt__t
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 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 iFXpLriLLLiiiiiiiLLiiLiiiiLic__32(x64emu_t *emu, uintptr_t fcn) { iFXpLriLLLiiiiiiiLLiiLiiiiLic__t fn = (iFXpLriLLLiiiiiiiLLiiLiiiiLic__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); }
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); }
void vFEiipV_32(x64emu_t *emu, uintptr_t fcn) { vFEiipV_t fn = (vFEiipV_t)fcn; fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptrv(R_ESP + 16)); }
@ -2544,7 +2545,6 @@ void iFEipii_32(x64emu_t *emu, uintptr_t fcn) { iFEipii_t fn = (iFEipii_t)fcn; R
void iFEippL_32(x64emu_t *emu, uintptr_t fcn) { iFEippL_t fn = (iFEippL_t)fcn; R_EAX = fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ulong(from_ptri(ulong_t, R_ESP + 16))); }
void iFEpipp_32(x64emu_t *emu, uintptr_t fcn) { iFEpipp_t fn = (iFEpipp_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); }
void iFEpupu_32(x64emu_t *emu, uintptr_t fcn) { iFEpupu_t fn = (iFEpupu_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(uint32_t, R_ESP + 16)); }
void iFEpLlp_32(x64emu_t *emu, uintptr_t fcn) { iFEpLlp_t fn = (iFEpLlp_t)fcn; R_EAX = fn(emu, 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 iFEpLpp_32(x64emu_t *emu, uintptr_t fcn) { iFEpLpp_t fn = (iFEpLpp_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); }
void iFEpLpV_32(x64emu_t *emu, uintptr_t fcn) { iFEpLpV_t fn = (iFEpLpV_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptrv(R_ESP + 16)); }
void iFEpplp_32(x64emu_t *emu, uintptr_t fcn) { iFEpplp_t fn = (iFEpplp_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_long(from_ptri(long_t, R_ESP + 12)), from_ptriv(R_ESP + 16)); }

View File

@ -878,7 +878,7 @@ void iFppbL_p_32(x64emu_t *emu, uintptr_t fnc);
void iFbp_pii_32(x64emu_t *emu, uintptr_t fnc);
void iFbp_pip_32(x64emu_t *emu, uintptr_t fnc);
void iFBp_pui_32(x64emu_t *emu, uintptr_t fnc);
void iFXLibp__32(x64emu_t *emu, uintptr_t fnc);
void iFXLiBp__32(x64emu_t *emu, uintptr_t fnc);
void iFXLbp_i_32(x64emu_t *emu, uintptr_t fnc);
void iFXLbL_i_32(x64emu_t *emu, uintptr_t fnc);
void iFXLbp_p_32(x64emu_t *emu, uintptr_t fnc);
@ -906,6 +906,7 @@ 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 iFpruuipWCCp_buuipWCCp_i_32(x64emu_t *emu, uintptr_t fnc);
void iFXpLriLLLiiiiiiiLLiiLiiiiLic__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);
void vFEiipV_32(x64emu_t *emu, uintptr_t fnc);
@ -1011,7 +1012,6 @@ void iFEipii_32(x64emu_t *emu, uintptr_t fnc);
void iFEippL_32(x64emu_t *emu, uintptr_t fnc);
void iFEpipp_32(x64emu_t *emu, uintptr_t fnc);
void iFEpupu_32(x64emu_t *emu, uintptr_t fnc);
void iFEpLlp_32(x64emu_t *emu, uintptr_t fnc);
void iFEpLpp_32(x64emu_t *emu, uintptr_t fnc);
void iFEpLpV_32(x64emu_t *emu, uintptr_t fnc);
void iFEpplp_32(x64emu_t *emu, uintptr_t fnc);

View File

@ -512,7 +512,7 @@ static void* my32_create_image_##A(void* a, void* b, uint32_t c, int d, int e, v
static pFXpuiipuuii_t my32_rev_create_image_fct_##A = NULL; \
static void* my32_rev_create_image_##A(void* a, void* b, uint32_t c, int d, int e, void* f, uint32_t g, uint32_t h, int i, int j) \
{ \
void* ret = my32_rev_create_image_fct_##A (FindDisplay(a), b, c, d, e, f, g, h, i, j); \
void* ret = my32_rev_create_image_fct_##A (getDisplay(a), b, c, d, e, f, g, h, i, j); \
WrapXImage(ret, ret); \
return ret; \
}
@ -521,7 +521,11 @@ SUPER()
static void* find_create_image_Fct(void* fct)
{
if(!fct) return fct;
if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct);
void* n_fct = GetNativeFnc((uintptr_t)fct);
#define GO(A) if(my32_rev_create_image_##A == n_fct) return (void*)my32_rev_create_image_fct_##A;
SUPER()
#undef GO
if(n_fct) return n_fct;
#define GO(A) if(my32_create_image_fct_##A == (uintptr_t)fct) return my32_create_image_##A;
SUPER()
#undef GO
@ -536,7 +540,7 @@ static void* reverse_create_image_Fct(library_t* lib, void* fct)
//Callsed from x86 world -> native world
if(!fct) return fct;
// first check if it's a wrapped function, that could be easy
#define GO(A) if(my32_create_image_fct_##A == (uintptr_t)fct) return my32_create_image_##A;
#define GO(A) if(my32_create_image_##A == fct) return (void*)my32_create_image_fct_##A;
SUPER()
#undef GO
if(FindElfAddress(my_context, (uintptr_t)fct))
@ -559,13 +563,13 @@ static void* reverse_create_image_Fct(library_t* lib, void* fct)
static uintptr_t my32_destroy_image_fct_##A = 0; \
static int my32_destroy_image_##A(void* a) \
{ \
WrapXImage(a, a); \
inplace_XImage_shrink(a); \
return (int)RunFunctionFmt(my32_destroy_image_fct_##A, "p", a); \
} \
static iFp_t my32_rev_destroy_image_fct_##A = NULL; \
static int my32_rev_destroy_image_##A(void* a) \
{ \
UnwrapXImage(a, a); \
inplace_XImage_enlarge(a); \
to_hash_d((uintptr_t)((XImage*)a)->obdata); \
return my32_rev_destroy_image_fct_##A (a); \
}
@ -574,7 +578,11 @@ SUPER()
static void* find_destroy_image_Fct(void* fct)
{
if(!fct) return fct;
if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct);
void* n_fct = GetNativeFnc((uintptr_t)fct);
#define GO(A) if(my32_rev_destroy_image_##A == n_fct) return (void*)my32_rev_destroy_image_fct_##A;
SUPER()
#undef GO
if(n_fct) return n_fct;
#define GO(A) if(my32_destroy_image_fct_##A == (uintptr_t)fct) return my32_destroy_image_##A;
SUPER()
#undef GO
@ -589,7 +597,7 @@ static void* reverse_destroy_image_Fct(library_t* lib, void* fct)
//Callsed from x86 world -> native world
if(!fct) return fct;
// first check if it's a wrapped function, that could be easy
#define GO(A) if(my32_destroy_image_fct_##A == (uintptr_t)fct) return my32_destroy_image_##A;
#define GO(A) if(my32_destroy_image_##A == fct) return (void*)my32_destroy_image_fct_##A;
SUPER()
#undef GO
if(FindElfAddress(my_context, (uintptr_t)fct))
@ -612,17 +620,17 @@ static void* reverse_destroy_image_Fct(library_t* lib, void* fct)
static uintptr_t my32_get_pixel_fct_##A = 0; \
static unsigned long my32_get_pixel_##A(void* a, int b, int c) \
{ \
WrapXImage(a, a); \
inplace_XImage_shrink(a); \
uint32_t ret = RunFunctionFmt(my32_get_pixel_fct_##A, "pii", a, b, c); \
UnwrapXImage(a, a); \
inplace_XImage_enlarge(a); \
return from_ulong(ret); \
} \
static LFpii_t my32_rev_get_pixel_fct_##A = NULL; \
static ulong_t my32_rev_get_pixel_##A(void* a, int b, int c) \
static unsigned long my32_rev_get_pixel_##A(void* a, int b, int c) \
{ \
UnwrapXImage(a, a); \
ulong_t ret = to_ulong(my32_rev_get_pixel_fct_##A (a, b, c)); \
WrapXImage(a, a); \
inplace_XImage_enlarge(a); \
unsigned long ret = my32_rev_get_pixel_fct_##A (a, b, c); \
inplace_XImage_shrink(a); \
return ret; \
}
SUPER()
@ -630,7 +638,11 @@ SUPER()
static void* find_get_pixel_Fct(void* fct)
{
if(!fct) return fct;
if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct);
void* n_fct = GetNativeFnc((uintptr_t)fct);
#define GO(A) if(my32_rev_get_pixel_##A == n_fct) return (void*)my32_rev_get_pixel_fct_##A;
SUPER()
#undef GO
if(n_fct) return n_fct;
#define GO(A) if(my32_get_pixel_fct_##A == (uintptr_t)fct) return my32_get_pixel_##A;
SUPER()
#undef GO
@ -645,7 +657,7 @@ static void* reverse_get_pixel_Fct(library_t* lib, void* fct)
//Callsed from x86 world -> native world
if(!fct) return fct;
// first check if it's a wrapped function, that could be easy
#define GO(A) if(my32_get_pixel_fct_##A == (uintptr_t)fct) return my32_get_pixel_##A;
#define GO(A) if(my32_get_pixel_##A == fct) return (void*)my32_get_pixel_fct_##A;
SUPER()
#undef GO
if(FindElfAddress(my_context, (uintptr_t)fct))
@ -668,17 +680,17 @@ static void* reverse_get_pixel_Fct(library_t* lib, void* fct)
static uintptr_t my32_put_pixel_fct_##A = 0; \
static int my32_put_pixel_##A(void* a, int b, int c,unsigned long d) \
{ \
WrapXImage(a, a); \
inplace_XImage_shrink(a); \
int ret = (int)RunFunctionFmt(my32_put_pixel_fct_##A, "piiL", a, b, c, d); \
UnwrapXImage(a, a); \
inplace_XImage_enlarge(a); \
return ret; \
} \
static iFpiiL_t my32_rev_put_pixel_fct_##A = NULL; \
static int my32_rev_put_pixel_##A(void* a, int b, int c, ulong_t d) \
{ \
UnwrapXImage(a, a); \
int ret = to_ulong(my32_rev_put_pixel_fct_##A (a, b, c, from_ulong(d))); \
WrapXImage(a, a); \
inplace_XImage_enlarge(a); \
int ret = my32_rev_put_pixel_fct_##A (a, b, c, from_ulong(d)); \
inplace_XImage_shrink(a); \
return ret; \
}
SUPER()
@ -686,7 +698,11 @@ SUPER()
static void* find_put_pixel_Fct(void* fct)
{
if(!fct) return fct;
if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct);
void* n_fct = GetNativeFnc((uintptr_t)fct);
#define GO(A) if(my32_rev_put_pixel_##A == n_fct) return (void*)my32_rev_put_pixel_fct_##A;
SUPER()
#undef GO
if(n_fct) return n_fct;
#define GO(A) if(my32_put_pixel_fct_##A == (uintptr_t)fct) return my32_put_pixel_##A;
SUPER()
#undef GO
@ -701,7 +717,7 @@ static void* reverse_put_pixel_Fct(library_t* lib, void* fct)
//Callsed from x86 world -> native world
if(!fct) return fct;
// first check if it's a wrapped function, that could be easy
#define GO(A) if(my32_put_pixel_fct_##A == (uintptr_t)fct) return my32_put_pixel_##A;
#define GO(A) if(my32_put_pixel_##A == fct) return (void*)my32_put_pixel_fct_##A;
SUPER()
#undef GO
if(FindElfAddress(my_context, (uintptr_t)fct))
@ -724,20 +740,20 @@ static void* reverse_put_pixel_Fct(library_t* lib, void* fct)
static uintptr_t my32_sub_image_fct_##A = 0; \
static void* my32_sub_image_##A(void* a, int b, int c, uint32_t d, uint32_t e) \
{ \
WrapXImage(a, a); \
inplace_XImage_shrink(a); \
void* ret = (void*)RunFunctionFmt(my32_sub_image_fct_##A, "piiuu", a, b, c, d, e);\
if(ret!=a) UnwrapXImage(ret, ret); \
UnwrapXImage(a, a); \
inplace_XImage_enlarge(a); \
return ret; \
} \
static pFpiiuu_t my32_rev_sub_image_fct_##A = NULL; \
static void* my32_rev_sub_image_##A(void* a, int b, int c, uint32_t d, uint32_t e) \
{ \
UnwrapXImage(a, a); \
inplace_XImage_enlarge(a); \
void* ret = my32_rev_sub_image_fct_##A (a, b, c, d, e); \
if(ret!=a) \
WrapXImage(ret, ret); \
WrapXImage(a, a); \
inplace_XImage_shrink(a); \
return ret; \
}
SUPER()
@ -745,7 +761,11 @@ SUPER()
static void* find_sub_image_Fct(void* fct)
{
if(!fct) return fct;
if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct);
void* n_fct = GetNativeFnc((uintptr_t)fct);
#define GO(A) if(my32_rev_sub_image_##A == n_fct) return (void*)my32_rev_sub_image_fct_##A;
SUPER()
#undef GO
if(n_fct) return n_fct;
#define GO(A) if(my32_sub_image_fct_##A == (uintptr_t)fct) return my32_sub_image_##A;
SUPER()
#undef GO
@ -760,7 +780,7 @@ static void* reverse_sub_image_Fct(library_t* lib, void* fct)
//Callsed from x86 world -> native world
if(!fct) return fct;
// first check if it's a wrapped function, that could be easy
#define GO(A) if(my32_sub_image_fct_##A == (uintptr_t)fct) return my32_sub_image_##A;
#define GO(A) if(my32_sub_image_##A == fct) return (void*)my32_sub_image_fct_##A;
SUPER()
#undef GO
if(FindElfAddress(my_context, (uintptr_t)fct))
@ -783,17 +803,17 @@ static void* reverse_sub_image_Fct(library_t* lib, void* fct)
static uintptr_t my32_add_pixel_fct_##A = 0; \
static int my32_add_pixel_##A(void* a, long b) \
{ \
WrapXImage(a, a); \
inplace_XImage_shrink(a); \
int ret = (int)RunFunctionFmt(my32_add_pixel_fct_##A, "pl", a, b); \
UnwrapXImage(a, a); \
inplace_XImage_enlarge(a); \
return ret; \
} \
static iFpl_t my32_rev_add_pixel_fct_##A = NULL; \
static int my32_rev_add_pixel_##A(void* a, long_t b) \
{ \
UnwrapXImage(a, a); \
inplace_XImage_enlarge(a); \
int ret = my32_rev_add_pixel_fct_##A (a, from_long(b)); \
WrapXImage(a, a); \
inplace_XImage_shrink(a); \
return ret; \
}
SUPER()
@ -801,7 +821,11 @@ SUPER()
static void* find_add_pixel_Fct(void* fct)
{
if(!fct) return fct;
if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct);
void* n_fct = GetNativeFnc((uintptr_t)fct);
#define GO(A) if(my32_rev_add_pixel_##A == n_fct) return (void*)my32_rev_add_pixel_fct_##A;
SUPER()
#undef GO
if(n_fct) return n_fct;
#define GO(A) if(my32_add_pixel_fct_##A == (uintptr_t)fct) return my32_add_pixel_##A;
SUPER()
#undef GO
@ -816,7 +840,7 @@ static void* reverse_add_pixel_Fct(library_t* lib, void* fct)
//Callsed from x86 world -> native world
if(!fct) return fct;
// first check if it's a wrapped function, that could be easy
#define GO(A) if(my32_add_pixel_fct_##A == (uintptr_t)fct) return my32_add_pixel_##A;
#define GO(A) if(my32_add_pixel_##A == fct) return (void*)my32_add_pixel_fct_##A;
SUPER()
#undef GO
if(FindElfAddress(my_context, (uintptr_t)fct))
@ -1442,24 +1466,24 @@ EXPORT void* my32_XGetImage(x64emu_t* emu, void* disp, size_t drawable, int32_t
if(!img)
return img;
// bridge all access functions...
WrapXImage(img, img);
inplace_XImage_shrink(img);
return img;
}
EXPORT void my32__XInitImageFuncPtrs(x64emu_t* emu, XImage* img)
{
my->_XInitImageFuncPtrs(img);
WrapXImage(emu, img);
inplace_XImage_shrink(img);
}
EXPORT int32_t my32_XPutImage(x64emu_t* emu, void* disp, size_t drawable, void* gc, void* image
, int32_t src_x, int32_t src_y, int32_t dst_x, int32_t dst_y
, uint32_t w, uint32_t h)
{
UnwrapXImage(image, image); // what if the image was created on x86 side and is smaller?
inplace_XImage_enlarge(image); // what if the image was created on x86 side and is smaller?
int32_t r = my->XPutImage(disp, drawable, gc, image, src_x, src_y, dst_x, dst_y, w, h);
// bridge all access functions...
WrapXImage(image, image);
inplace_XImage_shrink(image);
return r;
}
@ -1469,19 +1493,19 @@ EXPORT void* my32_XGetSubImage(x64emu_t* emu, void* disp, size_t drawable
, void* image, int32_t dst_x, int32_t dst_y)
{
UnwrapXImage(image, image);
inplace_XImage_enlarge(image);
XImage *img = my->XGetSubImage(disp, drawable, x, y, w, h, plane, fmt, image, dst_x, dst_y);
if(img && img!=image)
WrapXImage(img, img);
inplace_XImage_shrink(img);
WrapXImage(image, image);
inplace_XImage_shrink(image);
return img;
}
EXPORT void my32_XDestroyImage(x64emu_t* emu, void* image)
{
UnwrapXImage(image, image);
inplace_XImage_enlarge(image);
to_hash_d((uintptr_t)((XImage*)image)->obdata);
my->XDestroyImage(image);
}
@ -1566,7 +1590,7 @@ EXPORT void* my32_XSynchronize(x64emu_t* emu, void* display, int onoff)
EXPORT void* my32_XOpenDisplay(void* name)
{
void* ret = my->XOpenDisplay(name);
if(ret && box64_x11sync) my->XSynchronize(ret, 1);
if(ret && box64_x11sync) {my->XSynchronize(ret, 1); printf_log(LOG_INFO, "Forcing Syncronized opration on Display %p\n", ret);}
return ret;
}
@ -1581,23 +1605,8 @@ EXPORT int my32_XCloseDisplay(x64emu_t* emu, void* dpy)
EXPORT XID my32_XCreateWindow(x64emu_t* emu, void* d, XID Window, int x, int y, uint32_t width, uint32_t height, uint32_t border_width, int depth, uint32_t cl, void* visual, unsigned long mask, my_XSetWindowAttributes_32_t* attr)
{
my_XSetWindowAttributes_t attrib;
if(attr) {
attrib.background_pixmap = from_ulong(attr->background_pixmap);
attrib.background_pixel = from_ulong(attr->background_pixel);
attrib.border_pixmap = from_ulong(attr->border_pixmap);
attrib.border_pixel = from_ulong(attr->border_pixel);
attrib.bit_gravity = attr->bit_gravity;
attrib.win_gravity = attr->win_gravity;
attrib.backing_store = attr->backing_store;
attrib.backing_planes = from_ulong(attr->backing_planes);
attrib.backing_pixel = from_ulong(attr->backing_pixel);
attrib.save_under = attr->save_under;
attrib.event_mask = from_long(attr->event_mask);
attrib.do_not_propagate_mask = from_long(attr->do_not_propagate_mask);
attrib.override_redirect = attr->override_redirect;
attrib.colormap = from_ulong(attr->colormap);
attrib.cursor = from_ulong(attr->cursor);
}
if(attr)
convert_XSetWindowAttributes_to_64(&attrib, attr);
return my->XCreateWindow(d, Window, x, y, width, height, border_width, depth, cl, visual, mask, attr?(&attrib):NULL);
}
@ -1645,7 +1654,7 @@ EXPORT int my32_XWindowEvent(x64emu_t* emu, void* dpy, XID window, long mask, my
{
my_XEvent_t event = {0};
int ret = my->XWindowEvent(dpy, window, mask, &event);
if(ret) convertXEvent(evt, &event);
convertXEvent(evt, &event);
return ret;
}
@ -1808,6 +1817,18 @@ EXPORT int my32_Xutf8TextListToTextProperty(x64emu_t* emu, void* dpy, ptr_t* lis
return ret;
}
EXPORT int my32_XmbTextListToTextProperty(x64emu_t* emu, void* dpy, ptr_t* list, int count, uint32_t style, void* text)
{
char* l_list[count];
if(list)
for(int i=0; i<count; ++i)
l_list[i] = from_ptrv(list[i]);
struct_pLiL_t text_l = {0};
int ret = my->XmbTextListToTextProperty(dpy, list?(&l_list):NULL, count, style, &text_l);
to_struct_pLiL(to_ptrv(text), &text_l);
return ret;
}
EXPORT int my32_XGetWindowAttributes(x64emu_t* emu, void* dpy, XID window, my_XWindowAttributes_32_t* attr)
{
static my_Screen_32_t screen32 = {0};
@ -2044,12 +2065,8 @@ EXPORT int my32_XFreeFont(x64emu_t* emu, void* dpy, void* 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;
}
my_XSetWindowAttributes_t attrs_l[1];
convert_XSetWindowAttributes_to_64(attrs_l, attrs);
return my->XChangeWindowAttributes(dpy, window, mask, attrs_l);
}

View File

@ -42,7 +42,7 @@ GO(XBlackPixel, LFXi)
//GOM(XBlackPixelOfScreen, LFEbpXLiiiiipippLLLiiiil_)
//GOM(XCellsOfScreen, iFEbpXLiiiiipippLLLiiiil_)
GO(XChangeActivePointerGrab, iFXuLL)
GO(XChangeGC, iFXpLbiLLLiiiiiiiLLiiLiiiiLic_)
GO(XChangeGC, iFXpLriLLLiiiiiiiLLiiLiiiiLic_)
GO(XChangeKeyboardControl, iFXLp)
GO(XChangeKeyboardMapping, iFXiibL_i)
GO(XChangePointerControl, iFXiiiii)
@ -332,7 +332,7 @@ GO(XFillPolygon, iFXLppiii)
GO(XFillRectangle, iFXLpiiuu)
GO(XFillRectangles, iFXLppi)
GOM(XFilterEvent, iFEpL) // Warning: failed to confirm
GO(XFindContext, iFXLibp_)
GO(XFindContext, iFXLiBp_)
//GOM(XFindOnExtensionList, pFEbp_i)
GO(_XFlush, vFX)
GO(XFlush, iFX)
@ -913,7 +913,7 @@ GO(XmbResetIC, pFp)
GO(XmbTextEscapement, iFppi)
GO(XmbTextExtents, iFppipp)
//GO(_XmbTextListToTextProperty,
GO(XmbTextListToTextProperty, iFXbp_iubpLiL_)
GOM(XmbTextListToTextProperty, iFXEpiup)
GO(XmbTextPerCharExtents, iFppippippp)
//GO(_XmbTextPropertyToTextList,
GOM(XmbTextPropertyToTextList, iFEXbpLiL_pp)
@ -983,7 +983,7 @@ GO(_XReadEvents, vFX)
GO(_XReadPad, vFXpl)
GO(XRebindKeysym, iFXLbL_ipi)
GO(XRecolorCursor, iFXLbLWWWcc_bLWWWcc_)
GO(XReconfigureWMWindow, iFXLiubiiiiiLi_)
GO(XReconfigureWMWindow, iFXLiuriiiiiLi_)
GO(XRectInRegion, iFpiiuu)
//GO(_XRefreshKeyboardMapping,
GOM(XRefreshKeyboardMapping, iFEp)
@ -1109,8 +1109,8 @@ GO(XSetWindowColormap, iFXLL)
GO(XSetWMClientMachine, vFXLbpLiL_)
GO(XSetWMColormapWindows, iFXLbL_i)
GOM(XSetWMHints, iFEXLp)
GO(XSetWMIconName, vFXLbpLiL_)
GO(XSetWMName, vFXLbpLiL_)
GO(XSetWMIconName, vFXLrpLiL_)
GO(XSetWMName, vFXLrpLiL_)
GOM(XSetWMNormalHints, vFEXLp)
GOM(XSetWMProperties, vFEXLpppippp)
GOM(XSetWMProtocols, iFEXLpi)
@ -1232,7 +1232,7 @@ GO(XWhitePixel, LFXi)
//GOM(XWhitePixelOfScreen, LFEbpXLiiiiipippLLLiiiil_)
//GOM(XWidthMMOfScreen, iFEbpXLiiiiipippLLLiiiil_)
//GOM(XWidthOfScreen, iFEbpXLiiiiipippLLLiiiil_)
GOM(XWindowEvent, iFEpLlp)
GOM(XWindowEvent, iFEXLlp)
//GO(_XWireToEvent, iFppp)
GO(XWithdrawWindow, iFXLi)
//GO(XWMGeometry, iFpippupppppp)