From f2157b6c25d70433192b5edfdad36aa03cc763ff Mon Sep 17 00:00:00 2001 From: Sylvain Becker Date: Mon, 17 Jun 2019 22:31:36 +0200 Subject: [PATCH] Fixed bug 4669: Android software renderer, black screen when window resizes Using the software SDL_Renderer on Android leads to GL errors & black screen when window resizes --- src/core/android/SDL_android.c | 2 +- src/video/android/SDL_androidevents.c | 5 +++++ src/video/android/SDL_androidvideo.c | 1 + src/video/android/SDL_androidvideo.h | 1 + 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/core/android/SDL_android.c b/src/core/android/SDL_android.c index a4a2e1ce0fcaa..81d7fd42927eb 100644 --- a/src/core/android/SDL_android.c +++ b/src/core/android/SDL_android.c @@ -732,7 +732,7 @@ JNIEXPORT void JNICALL SDL_JAVA_INTERFACE(onNativeResize)( if (Android_Window) { - Android_SendResize(Android_Window); + Android_send_resize = 1; } SDL_UnlockMutex(Android_ActivityMutex); diff --git a/src/video/android/SDL_androidevents.c b/src/video/android/SDL_androidevents.c index de560c96ab248..b0f00c053260a 100644 --- a/src/video/android/SDL_androidevents.c +++ b/src/video/android/SDL_androidevents.c @@ -66,6 +66,11 @@ android_egl_context_restore(SDL_Window *window) event.type = SDL_RENDER_DEVICE_RESET; SDL_PushEvent(&event); } + + if (Android_send_resize) { + Android_send_resize = 0; + Android_SendResize(window); + } } } diff --git a/src/video/android/SDL_androidvideo.c b/src/video/android/SDL_androidvideo.c index 91e6e997375eb..41c4bde220854 100644 --- a/src/video/android/SDL_androidvideo.c +++ b/src/video/android/SDL_androidvideo.c @@ -69,6 +69,7 @@ static int Android_ScreenRate = 0; SDL_sem *Android_PauseSem = NULL; SDL_sem *Android_ResumeSem = NULL; SDL_mutex *Android_ActivityMutex = NULL; +int Android_send_resize = 0; static int Android_Available(void) diff --git a/src/video/android/SDL_androidvideo.h b/src/video/android/SDL_androidvideo.h index ef909967aadbf..4ee6d6960cff5 100644 --- a/src/video/android/SDL_androidvideo.h +++ b/src/video/android/SDL_androidvideo.h @@ -44,6 +44,7 @@ extern int Android_SurfaceWidth; extern int Android_SurfaceHeight; extern SDL_sem *Android_PauseSem, *Android_ResumeSem; extern SDL_mutex *Android_ActivityMutex; +extern int Android_send_resize; #endif /* SDL_androidvideo_h_ */