Browse Source

android: fix wrong events when locking device in landscape (thanks, Joshua!).

"Using an application in portrait orientation, turning off the device would
dispatch SDL_APP_WILLENTERBACKGROUND, then SDL_APP_DIDENTERBACKGROUND then
lock the screen.

However, rotating the application the application to landscape, then turning
off the device would incorrectly dispatch SDL_APP_WILLENTERBACKGROUND,
SDL_APP_WILLENTERBACKGROUND, SDL_APP_WILLENTERFOREGROUND and then
SDL_APP_DIDENTERFOREGROUND before locking the screen. You can imagine how
this created trouble :)

It appears this occurs because (on this application) turning off a device
when in landscape is triggering a resize. The resize logic in SDLActivity
triggers a resume.

This patch has resolved the issue on my device:

It prevents the dispatch of (improper) FOREGROUND events when locking
the device, but we get still events when the device is turned back on
and unlocked."
Ryan C. Gordon 8 years ago
parent
commit
2092a88359
1 changed files with 1 additions and 1 deletions
  1. 1 1
      android-project/src/org/libsdl/app/SDLActivity.java

+ 1 - 1
android-project/src/org/libsdl/app/SDLActivity.java

@@ -1229,7 +1229,7 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
             SDLActivity.mSDLThread.start();
         }
 
-        if (SDLActivity.mHasFocus) {
+        if (SDLActivity.mHasFocus && !SDLActivity.mIsPaused) {
             SDLActivity.handleResume();
         }
     }