Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
Browse files

Improved default behavior for pause/resume on Android

  • Loading branch information
slouken committed Nov 8, 2012
1 parent 29f2395 commit e20db115380373be7cd4ceccfb48eefd67692d1a
Showing with 11 additions and 7 deletions.
  1. +7 −5 README.android
  2. +4 −2 src/video/android/SDL_androidevents.c
@@ -143,14 +143,16 @@ See SDL_system.h for more details on these functions.
Pause / Resume behaviour
================================================================================

If SDL is compiled with SDL_ANDROID_BLOCK_ON_PAUSE defined, the event loop will
block itself when the app is paused (ie, when the user returns to the main
Android dashboard). Blocking is better in terms of battery use, and it allows your
app to spring back to life instantaneously after resume (versus polling for
a resume message).
If SDL is compiled with SDL_ANDROID_BLOCK_ON_PAUSE defined (the default),
the event loop will block itself when the app is paused (ie, when the user
returns to the main Android dashboard). Blocking is better in terms of battery
use, and it allows your app to spring back to life instantaneously after resume
(versus polling for a resume message).

Upon resume, SDL will attempt to restore the GL context automatically.
In modern devices (Android 3.0 and up) this will most likely succeed and your
app can continue to operate as it was.

However, there's a chance (on older hardware, or on systems under heavy load),
where the GL context can not be restored. In that case you have to listen for
a specific message, (which is not yet implemented!) and restore your textures
@@ -22,6 +22,9 @@

#if SDL_VIDEO_DRIVER_ANDROID

/* We're going to do this by default */
#define SDL_ANDROID_BLOCK_ON_PAUSE 1

#include "SDL_androidevents.h"
#include "SDL_events.h"

@@ -36,7 +39,7 @@ Android_PumpEvents(_THIS)

/*
* Android_ResumeSem and Android_PauseSem are signaled from Java_org_libsdl_app_SDLActivity_nativePause and Java_org_libsdl_app_SDLActivity_nativeResume
* When the pause semaphoe is signaled, if SDL_ANDROID_BLOCK_ON_PAUSE is defined the event loop will block until the resume signal is emitted.
* When the pause semaphore is signaled, if SDL_ANDROID_BLOCK_ON_PAUSE is defined the event loop will block until the resume signal is emitted.
* When the resume semaphore is signaled, SDL_GL_CreateContext is called which in turn calls Java code
* SDLActivity::createGLContext -> SDLActivity:: initEGL -> SDLActivity::createEGLSurface -> SDLActivity::createEGLContext
*/
@@ -77,7 +80,6 @@ Android_PumpEvents(_THIS)
isPaused = 1;
}
#endif

}
}

0 comments on commit e20db11

Please sign in to comment.