Android: better fix for bug 3186. Run those commands from SDL thread.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
diff --git a/src/core/android/SDL_android.c b/src/core/android/SDL_android.c
index 1cebed3..b9b9b3b 100644
--- a/src/core/android/SDL_android.c
+++ b/src/core/android/SDL_android.c
@@ -838,13 +838,6 @@ JNIEXPORT void JNICALL SDL_JAVA_INTERFACE(nativeResume)(
__android_log_print(ANDROID_LOG_VERBOSE, "SDL", "nativeResume()");
if (Android_Window) {
-
- /* Make sure SW Keyboard is restored when an app becomes foreground */
- if (SDL_IsTextInputActive()) {
- SDL_VideoDevice *_this = SDL_GetVideoDevice();
- Android_StartTextInput(_this); /* Only showTextInput */
- }
-
SDL_SendAppEvent(SDL_APP_WILLENTERFOREGROUND);
SDL_SendAppEvent(SDL_APP_DIDENTERFOREGROUND);
SDL_SendWindowEvent(Android_Window, SDL_WINDOWEVENT_FOCUS_GAINED, 0, 0);
diff --git a/src/video/android/SDL_androidevents.c b/src/video/android/SDL_androidevents.c
index 0e3bb01..776d300 100644
--- a/src/video/android/SDL_androidevents.c
+++ b/src/video/android/SDL_androidevents.c
@@ -107,6 +107,12 @@ Android_PumpEvents(_THIS)
android_egl_context_restore(Android_Window);
SDL_UnlockMutex(Android_ActivityMutex);
}
+
+ /* Make sure SW Keyboard is restored when an app becomes foreground */
+ if (SDL_IsTextInputActive()) {
+ SDL_VideoDevice *_this = SDL_GetVideoDevice();
+ Android_StartTextInput(_this); /* Only showTextInput */
+ }
}
} else {
if (isPausing || SDL_SemTryWait(Android_PauseSem) == 0) {
@@ -144,6 +150,12 @@ Android_PumpEvents(_THIS)
android_egl_context_restore(Android_Window);
SDL_UnlockMutex(Android_ActivityMutex);
}
+
+ /* Make sure SW Keyboard is restored when an app becomes foreground */
+ if (SDL_IsTextInputActive()) {
+ SDL_VideoDevice *_this = SDL_GetVideoDevice();
+ Android_StartTextInput(_this); /* Only showTextInput */
+ }
}
} else {
if (SDL_SemTryWait(Android_PauseSem) == 0) {