From 12b92260ccd85cd3bf3c06b225c00edeb71e6a05 Mon Sep 17 00:00:00 2001 From: Sylvain Becker Date: Tue, 18 Jun 2019 18:40:40 +0200 Subject: [PATCH] Android: try to fix resize with software rendering (bug 4669) --- src/render/software/SDL_render_sw.c | 6 ++++++ src/video/android/SDL_androidvideo.c | 12 ++++++++++++ src/video/android/SDL_androidvideo.h | 1 + 3 files changed, 19 insertions(+) diff --git a/src/render/software/SDL_render_sw.c b/src/render/software/SDL_render_sw.c index 088a0a5a5d6d7..fd98b4c2d8646 100644 --- a/src/render/software/SDL_render_sw.c +++ b/src/render/software/SDL_render_sw.c @@ -82,6 +82,11 @@ SW_WindowEvent(SDL_Renderer * renderer, const SDL_WindowEvent *event) static int SW_GetOutputSize(SDL_Renderer * renderer, int *w, int *h) { +#if defined(ANDROID) + extern void Android_GetScreenResolution(int *w, int *h); + Android_GetScreenResolution(w, h); + return 0; +#else SDL_Surface *surface = SW_ActivateRenderer(renderer); if (surface) { @@ -96,6 +101,7 @@ SW_GetOutputSize(SDL_Renderer * renderer, int *w, int *h) SDL_SetError("Software renderer doesn't have an output surface"); return -1; } +#endif } static int diff --git a/src/video/android/SDL_androidvideo.c b/src/video/android/SDL_androidvideo.c index 91e6e997375eb..2a9e304c22bee 100644 --- a/src/video/android/SDL_androidvideo.c +++ b/src/video/android/SDL_androidvideo.c @@ -237,6 +237,18 @@ Android_SetScreenResolution(int surfaceWidth, int surfaceHeight, int deviceWidth Android_ScreenRate = (int)rate; } +void +Android_GetScreenResolution(int *w, int *h) +{ + if (w) { + *w = Android_SurfaceWidth; + } + + if (h) { + *h = Android_SurfaceHeight; + } +} + void Android_SendResize(SDL_Window *window) { /* diff --git a/src/video/android/SDL_androidvideo.h b/src/video/android/SDL_androidvideo.h index ef909967aadbf..f54396ea7d8b5 100644 --- a/src/video/android/SDL_androidvideo.h +++ b/src/video/android/SDL_androidvideo.h @@ -30,6 +30,7 @@ /* Called by the JNI layer when the screen changes size or format */ extern void Android_SetScreenResolution(int surfaceWidth, int surfaceHeight, int deviceWidth, int deviceHeight, Uint32 format, float rate); extern void Android_SendResize(SDL_Window *window); +extern void Android_GetScreenResolution(int *w, int *h); /* Private display data */