From e20db115380373be7cd4ceccfb48eefd67692d1a Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 7 Nov 2012 20:17:27 -0800 Subject: [PATCH] Improved default behavior for pause/resume on Android --- README.android | 12 +++++++----- src/video/android/SDL_androidevents.c | 6 ++++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/README.android b/README.android index 4d3a64263..2900b384e 100644 --- a/README.android +++ b/README.android @@ -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 diff --git a/src/video/android/SDL_androidevents.c b/src/video/android/SDL_androidevents.c index bec42729b..d51a91ce0 100644 --- a/src/video/android/SDL_androidevents.c +++ b/src/video/android/SDL_androidevents.c @@ -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 - } }