diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-10-09 15:56:07 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-10-09 15:56:07 +0200 |
| commit | 05384f581feada51b7da638ab83f7ccbbd8193c9 (patch) | |
| tree | 4c63552f97d69b2eb46fa3e99521fe536ceaa6ba /src | |
| parent | 84f3c104b201e433c6f31a82211d8a646ca20c41 (diff) | |
| download | box64-05384f581feada51b7da638ab83f7ccbbd8193c9.tar.gz box64-05384f581feada51b7da638ab83f7ccbbd8193c9.zip | |
[BOX32] Improved again, X11 and XImage handling
Diffstat (limited to 'src')
| -rw-r--r-- | src/wrapped/wrappedlibx11.c | 2 | ||||
| -rw-r--r-- | src/wrapped32/generated/functions_list.txt | 7 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrappedlibx11types32.h | 3 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrapper32.c | 8 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrapper32.h | 4 | ||||
| -rw-r--r-- | src/wrapped32/wrappedlibx11.c | 151 | ||||
| -rw-r--r-- | src/wrapped32/wrappedlibx11_private.h | 14 |
7 files changed, 102 insertions, 87 deletions
diff --git a/src/wrapped/wrappedlibx11.c b/src/wrapped/wrappedlibx11.c index ed3ddc46..3c6d00c5 100644 --- a/src/wrapped/wrappedlibx11.c +++ b/src/wrapped/wrappedlibx11.c @@ -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)\ diff --git a/src/wrapped32/generated/functions_list.txt b/src/wrapped32/generated/functions_list.txt index e868a93b..c50e4a3f 100644 --- a/src/wrapped32/generated/functions_list.txt +++ b/src/wrapped32/generated/functions_list.txt @@ -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: diff --git a/src/wrapped32/generated/wrappedlibx11types32.h b/src/wrapped32/generated/wrappedlibx11types32.h index 5d4f92e3..f62571dc 100644 --- a/src/wrapped32/generated/wrappedlibx11types32.h +++ b/src/wrapped32/generated/wrappedlibx11types32.h @@ -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) \ diff --git a/src/wrapped32/generated/wrapper32.c b/src/wrapped32/generated/wrapper32.c index bd27807a..88fc6042 100644 --- a/src/wrapped32/generated/wrapper32.c +++ b/src/wrapped32/generated/wrapper32.c @@ -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)); } diff --git a/src/wrapped32/generated/wrapper32.h b/src/wrapped32/generated/wrapper32.h index 966924bd..fc925fec 100644 --- a/src/wrapped32/generated/wrapper32.h +++ b/src/wrapped32/generated/wrapper32.h @@ -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); diff --git a/src/wrapped32/wrappedlibx11.c b/src/wrapped32/wrappedlibx11.c index b696a91d..2efd4899 100644 --- a/src/wrapped32/wrappedlibx11.c +++ b/src/wrapped32/wrappedlibx11.c @@ -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); } diff --git a/src/wrapped32/wrappedlibx11_private.h b/src/wrapped32/wrappedlibx11_private.h index 43da3bf4..76a117dc 100644 --- a/src/wrapped32/wrappedlibx11_private.h +++ b/src/wrapped32/wrappedlibx11_private.h @@ -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) |