diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-10-05 16:36:31 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-10-05 16:36:31 +0200 |
| commit | 2a2f82a745ac389e143a2e187029a7ed919e8a39 (patch) | |
| tree | 8f91f5657d43e09bfcf438d699f75bc8f2a34b16 /src/libtools | |
| parent | 13a7801421ea8159917594cec60194a6a2805bdb (diff) | |
| download | box64-2a2f82a745ac389e143a2e187029a7ed919e8a39.tar.gz box64-2a2f82a745ac389e143a2e187029a7ed919e8a39.zip | |
[BOX32] Added many more 32bits wrapped function (some using wrapperhelper)
Diffstat (limited to 'src/libtools')
| -rw-r--r-- | src/libtools/my_x11_defs.h | 13 | ||||
| -rw-r--r-- | src/libtools/my_x11_defs_32.h | 13 | ||||
| -rw-r--r-- | src/libtools/sdl2align32.c | 93 |
3 files changed, 76 insertions, 43 deletions
diff --git a/src/libtools/my_x11_defs.h b/src/libtools/my_x11_defs.h index 28f9cb52..b6fcf1e7 100644 --- a/src/libtools/my_x11_defs.h +++ b/src/libtools/my_x11_defs.h @@ -864,4 +864,17 @@ typedef struct my_XModifierKeymap_s { } my_XModifierKeymap_t; +typedef struct my_XdbeVisualInfo_s +{ + XID visual; + int depth; + int perflevel; +} my_XdbeVisualInfo_t; + +typedef struct my_XdbeScreenVisualInfo_s +{ + int count; + my_XdbeVisualInfo_t* visinfo; +} my_XdbeScreenVisualInfo_t; + #endif//MY_X11_DEFS \ No newline at end of file diff --git a/src/libtools/my_x11_defs_32.h b/src/libtools/my_x11_defs_32.h index e82f0d7a..d247b8e9 100644 --- a/src/libtools/my_x11_defs_32.h +++ b/src/libtools/my_x11_defs_32.h @@ -797,4 +797,17 @@ typedef struct my_XModifierKeymap_32_s { ptr_t modifiermap; //uint8_t* } my_XModifierKeymap_32_t; +typedef struct my_XdbeVisualInfo_32_s +{ + XID_32 visual; + int depth; + int perflevel; +} my_XdbeVisualInfo_32_t; + +typedef struct my_XdbeScreenVisualInfo_32_s +{ + int count; + ptr_t visinfo; //my_XdbeVisualInfo_t* +} my_XdbeScreenVisualInfo_32_t; + #endif//MY_X11_DEFS_32 \ No newline at end of file diff --git a/src/libtools/sdl2align32.c b/src/libtools/sdl2align32.c index 3adfed3d..540d3cc5 100644 --- a/src/libtools/sdl2align32.c +++ b/src/libtools/sdl2align32.c @@ -423,32 +423,36 @@ void inplace_SDL2_Palette_to_32(void* a) dst->version = src->version; dst->refcount = src->refcount; } - +#define SDL2_PIXELFORMAT_SIGN 0xBADC0FEE void inplace_SDL2_PixelFormat_to_32(void* a) { while (a) { my_SDL2_PixelFormat_t* src = a; my_SDL2_PixelFormat_32_t* dst = a; - dst->format = src->format; - inplace_SDL2_Palette_to_32(src->palette); - dst->palette = to_ptrv(src->palette); - dst->BitsPerPixel = src->BitsPerPixel; - dst->BytesPerPixel = src->BytesPerPixel; - dst->Rmask = src->Rmask; - dst->Gmask = src->Gmask; - dst->Bmask = src->Bmask; - dst->Amask = src->Amask; - dst->Rloss = src->Rloss; - dst->Gloss = src->Gloss; - dst->Bloss = src->Bloss; - dst->Aloss = src->Aloss; - dst->Rshift = src->Rshift; - dst->Gshift = src->Gshift; - dst->Bshift = src->Bshift; - dst->Ashift = src->Ashift; - dst->refcount = src->refcount; - a = (void*)src->next; - dst->next = to_ptrv(src->next); + if(*(uint32_t*)(dst+1) != SDL2_PIXELFORMAT_SIGN) { + dst->format = src->format; + inplace_SDL2_Palette_to_32(src->palette); + dst->palette = to_ptrv(src->palette); + dst->BitsPerPixel = src->BitsPerPixel; + dst->BytesPerPixel = src->BytesPerPixel; + dst->Rmask = src->Rmask; + dst->Gmask = src->Gmask; + dst->Bmask = src->Bmask; + dst->Amask = src->Amask; + dst->Rloss = src->Rloss; + dst->Gloss = src->Gloss; + dst->Bloss = src->Bloss; + dst->Aloss = src->Aloss; + dst->Rshift = src->Rshift; + dst->Gshift = src->Gshift; + dst->Bshift = src->Bshift; + dst->Ashift = src->Ashift; + dst->refcount = src->refcount; + a = (void*)src->next; + dst->next = to_ptrv(src->next); + // put a signature to avoid muultiple unpack because of the next handling + *(uint32_t*)(dst+1) = SDL2_PIXELFORMAT_SIGN; + } else a = from_ptrv(dst->next); } } @@ -492,28 +496,31 @@ void inplace_SDL2_PixelFormat_to_64(void* a) while (a) { my_SDL2_PixelFormat_32_t* src = a; my_SDL2_PixelFormat_t* dst = a; - uintptr_t p = (uintptr_t)(src->next); - a = (void*)p; - dst->next = from_ptrv(src->next); - dst->refcount = src->refcount; - dst->Ashift = src->Ashift; - dst->Bshift = src->Bshift; - dst->Gshift = src->Gshift; - dst->Rshift = src->Rshift; - dst->Aloss = src->Aloss; - dst->Bloss = src->Bloss; - dst->Gloss = src->Gloss; - dst->Rloss = src->Rloss; - dst->Amask = src->Amask; - dst->Bmask = src->Bmask; - dst->Gmask = src->Gmask; - dst->Rmask = src->Rmask; - dst->BytesPerPixel = src->BytesPerPixel; - dst->BitsPerPixel = src->BitsPerPixel; - p = (uintptr_t)(src->palette); - inplace_SDL2_Palette_to_64((void*)p); - dst->palette = from_ptrv(src->palette); - dst->format = src->format; + // check signatue + if(*(uint32_t*)(src+1) == SDL2_PIXELFORMAT_SIGN) { + uintptr_t p = (uintptr_t)(src->next); + a = (void*)p; + dst->next = from_ptrv(src->next); + dst->refcount = src->refcount; + dst->Ashift = src->Ashift; + dst->Bshift = src->Bshift; + dst->Gshift = src->Gshift; + dst->Rshift = src->Rshift; + dst->Aloss = src->Aloss; + dst->Bloss = src->Bloss; + dst->Gloss = src->Gloss; + dst->Rloss = src->Rloss; + dst->Amask = src->Amask; + dst->Bmask = src->Bmask; + dst->Gmask = src->Gmask; + dst->Rmask = src->Rmask; + dst->BytesPerPixel = src->BytesPerPixel; + dst->BitsPerPixel = src->BitsPerPixel; + p = (uintptr_t)(src->palette); + inplace_SDL2_Palette_to_64((void*)p); + dst->palette = from_ptrv(src->palette); + dst->format = src->format; + } else a = dst->next; // already 64bits! } } |