diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-10-09 11:48:22 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-10-09 11:48:22 +0200 |
| commit | 84f3c104b201e433c6f31a82211d8a646ca20c41 (patch) | |
| tree | 18d8b85b875ff00f97ee18cc0727aab8478bd78f /src/wrapped32 | |
| parent | 761f7e40de1f6ff859b4bbdcd60674f2de9dbf0d (diff) | |
| download | box64-84f3c104b201e433c6f31a82211d8a646ca20c41.tar.gz box64-84f3c104b201e433c6f31a82211d8a646ca20c41.zip | |
[BOX32] Improved handlong of XImage
Diffstat (limited to 'src/wrapped32')
| -rw-r--r-- | src/wrapped32/wrappedlibx11.c | 6 | ||||
| -rw-r--r-- | src/wrapped32/wrappedlibxext.c | 15 |
2 files changed, 9 insertions, 12 deletions
diff --git a/src/wrapped32/wrappedlibx11.c b/src/wrapped32/wrappedlibx11.c index 7f333e94..b696a91d 100644 --- a/src/wrapped32/wrappedlibx11.c +++ b/src/wrapped32/wrappedlibx11.c @@ -566,6 +566,7 @@ static iFp_t my32_rev_destroy_image_fct_##A = NULL; \ static int my32_rev_destroy_image_##A(void* a) \ { \ UnwrapXImage(a, a); \ + to_hash_d((uintptr_t)((XImage*)a)->obdata); \ return my32_rev_destroy_image_fct_##A (a); \ } SUPER() @@ -1361,7 +1362,7 @@ void WrapXImage(void* d, void* s) dst->red_mask = to_ulong(src->red_mask); dst->green_mask = to_ulong(src->green_mask); dst->blue_mask = to_ulong(src->blue_mask); - dst->obdata = to_ptrv(src->obdata); + dst->obdata = to_hash((uintptr_t)src->obdata); #define GO(A, W) \ dst->f.A = to_ptrv((W##_t)reverse_##A##_Fct(my_lib, src->f.A)); @@ -1393,7 +1394,7 @@ void UnwrapXImage(void* d, void* s) GO(create_image, pFXpuiipuuii) #undef GO - dst->obdata = from_ptrv(src->obdata); + dst->obdata = (void*)from_hash(src->obdata); dst->blue_mask = from_ulong(src->blue_mask); dst->green_mask = from_ulong(src->green_mask); dst->red_mask = from_ulong(src->red_mask); @@ -1481,6 +1482,7 @@ EXPORT void my32_XDestroyImage(x64emu_t* emu, void* image) { UnwrapXImage(image, image); + to_hash_d((uintptr_t)((XImage*)image)->obdata); my->XDestroyImage(image); } #if 0 diff --git a/src/wrapped32/wrappedlibxext.c b/src/wrapped32/wrappedlibxext.c index efd390ba..31d7092b 100644 --- a/src/wrapped32/wrappedlibxext.c +++ b/src/wrapped32/wrappedlibxext.c @@ -335,10 +335,7 @@ EXPORT void* my32_XShmCreateImage(x64emu_t* emu, void* disp, void* vis, uint32_t , void* data, void* shminfo, uint32_t w, uint32_t h) { XImage *img = my->XShmCreateImage(disp, vis, depth, fmt, data, shminfo, w, h); - if(!img) - return img; - // bridge all access functions... - BridgeImageFunc(emu, img); + inplace_XImage_shrink(img); return img; } @@ -346,19 +343,17 @@ EXPORT int32_t my32_XShmPutImage(x64emu_t* emu, void* disp, size_t drawable, voi , int32_t src_x, int32_t src_y, int32_t dst_x, int32_t dst_y , uint32_t w, uint32_t h, int32_t sendevt) { - UnbridgeImageFunc(emu, (XImage*)image); + inplace_XImage_enlarge(image); int32_t r = my->XShmPutImage(disp, drawable, gc, image, src_x, src_y, dst_x, dst_y, w, h, sendevt); - // bridge all access functions... - BridgeImageFunc(emu, (XImage*)image); + inplace_XImage_shrink(image); return r; } EXPORT int32_t my32_XShmGetImage(x64emu_t* emu, void* disp, size_t drawable, void* image, int32_t x, int32_t y, size_t plane) { - UnbridgeImageFunc(emu, (XImage*)image); + inplace_XImage_enlarge(image); int32_t r = my->XShmGetImage(disp, drawable, image, x, y, plane); - // bridge all access functions... - BridgeImageFunc(emu, (XImage*)image); + inplace_XImage_shrink(image); return r; } |