Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Commit

Permalink
Improved default behavior for pause/resume on Android
Browse files Browse the repository at this point in the history
  • Loading branch information
slouken committed Nov 8, 2012
1 parent 29f2395 commit e20db11
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 7 deletions.
12 changes: 7 additions & 5 deletions README.android
Expand Up @@ -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
Expand Down
6 changes: 4 additions & 2 deletions src/video/android/SDL_androidevents.c
Expand Up @@ -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"

Expand All @@ -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
*/
Expand Down Expand Up @@ -77,7 +80,6 @@ Android_PumpEvents(_THIS)
isPaused = 1;
}
#endif

}
}

Expand Down

0 comments on commit e20db11

Please sign in to comment.