Browse Source

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

Sylvain Becker 6 years ago
parent
commit
462e62e154
2 changed files with 12 additions and 7 deletions
  1. 0 7
      src/core/android/SDL_android.c
  2. 12 0
      src/video/android/SDL_androidevents.c

+ 0 - 7
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);

+ 12 - 0
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) {