about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorYang Liu <numbksco@gmail.com>2024-09-26 15:24:32 +0800
committerGitHub <noreply@github.com>2024-09-26 09:24:32 +0200
commit6a3904fc48f360544db07266c42e1ddc77976be1 (patch)
tree4476a984d61ab2ae51551f1369622b7b3cecbfdf /src
parentb045dbde0f98fb673f10a5cdb2b25c5094167b65 (diff)
downloadbox64-6a3904fc48f360544db07266c42e1ddc77976be1.tar.gz
box64-6a3904fc48f360544db07266c42e1ddc77976be1.zip
[BOX32][WRAPPER] Refined SDL2 display mode wrapping (#1874)
* [BOX32][WRAPPER] Refined SDL2 display mode wrapping

* review
Diffstat (limited to 'src')
-rw-r--r--src/include/sdl2align32.h1
-rw-r--r--src/libtools/sdl2align32.c11
-rw-r--r--src/wrapped32/wrappedsdl2.c6
3 files changed, 15 insertions, 3 deletions
diff --git a/src/include/sdl2align32.h b/src/include/sdl2align32.h
index 2920da60..d1131fb2 100644
--- a/src/include/sdl2align32.h
+++ b/src/include/sdl2align32.h
@@ -763,6 +763,7 @@ typedef enum SDL2_EventType {
 
 void inplace_SDL2_DisplayMode_to_64(void* a);
 void inplace_SDL2_DisplayMode_to_32(void* a);
+void convert_SDL2_DisplayMode_to_32(void* dst_, void* src_);
 
 void convert_SDL2_Event_to_32(void* dst_, const void* src_);
 void convert_SDL2_Event_to_64(void* dst_, const void* src_);
diff --git a/src/libtools/sdl2align32.c b/src/libtools/sdl2align32.c
index 83386b9b..dd0b33da 100644
--- a/src/libtools/sdl2align32.c
+++ b/src/libtools/sdl2align32.c
@@ -31,6 +31,17 @@ void inplace_SDL2_DisplayMode_to_32(void* a)
     dst->driverdata = to_ptrv(src->driverdata);
 }
 
+void convert_SDL2_DisplayMode_to_32(void* dst_, void* src_)
+{
+    if (!src_ || !dst_) return;
+    my_SDL2_DisplayMode_t* src = src_;
+    my_SDL2_DisplayMode_32_t* dst = dst_;
+    dst->format = src->format;
+    dst->w = src->w;
+    dst->h = src->h;
+    dst->refresh_rate = src->refresh_rate;
+    dst->driverdata = to_ptrv(src->driverdata);
+}
 
 void convert_SDL2_Event_to_32(void* dst_, const void* src_)
 {
diff --git a/src/wrapped32/wrappedsdl2.c b/src/wrapped32/wrappedsdl2.c
index 7e2e6f26..0914f7d1 100644
--- a/src/wrapped32/wrappedsdl2.c
+++ b/src/wrapped32/wrappedsdl2.c
@@ -96,9 +96,9 @@ static void* find_AudioCallback_Fct(void* fct)
 
 EXPORT int my32_2_SDL_GetDesktopDisplayMode(int displayIndex, void* mode)
 {
-    inplace_SDL2_DisplayMode_to_64(mode);
-    int ret = my->SDL_GetDesktopDisplayMode(displayIndex, mode);
-    inplace_SDL2_DisplayMode_to_32(mode);
+    my_SDL2_DisplayMode_t my_mode = { 0 };
+    int ret = my->SDL_GetDesktopDisplayMode(displayIndex, &my_mode);
+    convert_SDL2_DisplayMode_to_32(mode, &my_mode);
     return ret;
 }