diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-12-13 15:24:03 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-12-13 15:24:11 +0100 |
| commit | fa3db3df11f0d10a4a46f5ec5b0aaeaf34656d72 (patch) | |
| tree | 74dacd24ef44f155a2b6f0ab517bfe25c2e48dc2 /src/wrapped32/wrappedlibxi.c | |
| parent | 4b4c0143d951b6aa18e2102136b4b72e165459d4 (diff) | |
| download | box64-fa3db3df11f0d10a4a46f5ec5b0aaeaf34656d72.tar.gz box64-fa3db3df11f0d10a4a46f5ec5b0aaeaf34656d72.zip | |
[BOX32][WRAPPER] Added a arge batch of 32bits wrapped function to X11 and friends
Diffstat (limited to 'src/wrapped32/wrappedlibxi.c')
| -rw-r--r-- | src/wrapped32/wrappedlibxi.c | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/wrapped32/wrappedlibxi.c b/src/wrapped32/wrappedlibxi.c index 570e2240..90ac4c33 100644 --- a/src/wrapped32/wrappedlibxi.c +++ b/src/wrapped32/wrappedlibxi.c @@ -99,4 +99,64 @@ EXPORT int my32_XGetDeviceButtonMapping(x64emu_t* emu, void* dpy, void* d, void* inplace_XDevice_shrink(d); } +EXPORT void* my32_XQueryDeviceState(x64emu_t* emu, void* dpy, void* d) +{ + void* ret = inplace_XDeviceState_shrink(my->XQueryDeviceState(dpy, inplace_XDevice_enlarge(d))); + inplace_XDevice_shrink(d); + return ret; +} + +EXPORT void my32_XFreeDeviceState(x64emu_t* emu, void* ds) +{ + my->XFreeDeviceState(inplace_XDeviceState_enlarge(ds)); +} + +EXPORT void* my32_XListInputDevices(x64emu_t* emu, void* dpy, int* n) +{ + return inplace_XDeviceInfo_shrink(my->XListInputDevices(dpy, n)); +} + +EXPORT void my32_XFreeDeviceList(x64emu_t* emu, void* l) +{ + my->XFreeDeviceList(inplace_XDeviceInfo_enlarge(l)); +} + +EXPORT void* my32_XGetDeviceMotionEvents(x64emu_t* emu, void* dpy, void* d, unsigned long start, unsigned long stop, int* n, int* mode, int* axis) +{ + void* ret = my->XGetDeviceMotionEvents(dpy, inplace_XDevice_enlarge(d), start, stop, n, mode, axis); + inplace_XDevice_shrink(d); + if(ret) { + my_XDeviceTimeCoord_t* src = ret; + my_XDeviceTimeCoord_32_t* dst = ret; + for(int i=0; i<*n; ++i) { + dst[i].time = to_ulong(src[i].time); + dst[i].data = to_ptrv(src[i].data); + } + if(*n) { + dst[*n].time = 0; dst[*n].data = 0; // mark the end + } + } +} + +EXPORT void my32_XFreeDeviceMotionEvents(x64emu_t* emu, void* l) +{ + int n=0; + my_XDeviceTimeCoord_32_t* src = l; + my_XDeviceTimeCoord_t* dst = l; + // search length first + while(src[n].time || src[n].data) ++n; + for(int i=n; i>=0; --i) { + dst[i].data = from_ptrv(src[i].data); + dst[i].time = from_ulong(src[i].time); + } + my->XFreeDeviceMotionEvents(l); +} + +EXPORT int my32_XGrabDevice(x64emu_t* emu, void* dpy, void* d, XID w, int owner, int count, void* evt, int this_mode, int other_modes, unsigned long time) +{ + int ret = my->XGrabDevice(dpy, inplace_XDevice_enlarge(d), w, owner, count, evt, this_mode, other_modes, time); + inplace_XDevice_shrink(d); + return ret; +} + #include "wrappedlib_init32.h" |