diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2022-02-13 12:02:37 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2022-02-13 12:02:37 +0100 |
| commit | 23709c09c7245272f3963f8fef457b67249c110d (patch) | |
| tree | d1df549c75dc9fd04a15a4699c99633e4f4a1769 /src/wrapped/wrappedsdl2image.c | |
| parent | 547b97d4cb6d06104dc104458ac48fd91bca5e41 (diff) | |
| download | box64-23709c09c7245272f3963f8fef457b67249c110d.tar.gz box64-23709c09c7245272f3963f8fef457b67249c110d.zip | |
Added some code to detect if emulted program use old IMG_SavePNG_RW api instead of current one
Diffstat (limited to 'src/wrapped/wrappedsdl2image.c')
| -rwxr-xr-x | src/wrapped/wrappedsdl2image.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/wrapped/wrappedsdl2image.c b/src/wrapped/wrappedsdl2image.c index 5b531167..eae0c159 100755 --- a/src/wrapped/wrappedsdl2image.c +++ b/src/wrapped/wrappedsdl2image.c @@ -119,12 +119,22 @@ EXPORT void *my2_IMG_Load_RW(x64emu_t* emu, void* a, int32_t b) RWNativeEnd2(rw); return r; } -EXPORT int32_t my2_IMG_SavePNG_RW(x64emu_t* emu, void* a, void* surf, int32_t compression) +EXPORT int32_t my2_IMG_SavePNG_RW(x64emu_t* emu, void* s, void* a, int32_t b) { sdl2image_my_t *my = (sdl2image_my_t *)my_lib->priv.w.p2; - SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a); - int32_t r = my->IMG_SavePNG_RW(rw, surf, compression); - RWNativeEnd2(rw); + // some old? fuction signature use IMG_SavePNG_RW(dst, surf, compression) instead of the IMG_SavePNG_RW(surf, dst, freedst) + // need to try detect if s is in fact a RWops + int32_t r; + if(isRWops((SDL2_RWops_t*)s) && !isRWops((SDL2_RWops_t*)a)) { + SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)s); + r = my->IMG_SavePNG_RW(a, rw, 0); + RWNativeEnd2(rw); + } else { + SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a); + r = my->IMG_SavePNG_RW(s, rw, b); + if(b==0) + RWNativeEnd2(rw); + } return r; } |