Commit 462e62e1549fa3401d6241f3ef1691988619a1fe

Sylvain Becker 2019-01-06T20:25:54

Android: better fix for bug 3186. Run those commands from SDL thread.

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) {