mirror of
https://github.com/Relintai/sdl2_frt.git
synced 2024-12-16 11:06:49 +01:00
Android: make Android_PumpEvents() more readable
No behavior change in this commit.
This commit is contained in:
parent
ca184ac386
commit
cf12234454
@ -63,35 +63,37 @@ android_egl_context_backup(SDL_Window *window)
|
|||||||
SDL_GL_MakeCurrent(window, NULL);
|
SDL_GL_MakeCurrent(window, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Android_ResumeSem and Android_PauseSem are signaled from Java_org_libsdl_app_SDLActivity_nativePause and Java_org_libsdl_app_SDLActivity_nativeResume
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* No polling necessary
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if SDL_ANDROID_BLOCK_ON_PAUSE
|
||||||
|
|
||||||
void
|
void
|
||||||
Android_PumpEvents(_THIS)
|
Android_PumpEvents(_THIS)
|
||||||
{
|
{
|
||||||
static int isPaused = 0;
|
static int isPaused = 0;
|
||||||
#if SDL_ANDROID_BLOCK_ON_PAUSE
|
|
||||||
static int isPausing = 0;
|
static int isPausing = 0;
|
||||||
#endif
|
|
||||||
/* No polling necessary */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Android_ResumeSem and Android_PauseSem are signaled from Java_org_libsdl_app_SDLActivity_nativePause and Java_org_libsdl_app_SDLActivity_nativeResume
|
|
||||||
* 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if SDL_ANDROID_BLOCK_ON_PAUSE
|
|
||||||
if (isPaused && !isPausing) {
|
if (isPaused && !isPausing) {
|
||||||
|
|
||||||
/* Make sure this is the last thing we do before pausing */
|
/* Make sure this is the last thing we do before pausing */
|
||||||
SDL_LockMutex(Android_ActivityMutex);
|
SDL_LockMutex(Android_ActivityMutex);
|
||||||
android_egl_context_backup(Android_Window);
|
android_egl_context_backup(Android_Window);
|
||||||
SDL_UnlockMutex(Android_ActivityMutex);
|
SDL_UnlockMutex(Android_ActivityMutex);
|
||||||
|
|
||||||
ANDROIDAUDIO_PauseDevices();
|
ANDROIDAUDIO_PauseDevices();
|
||||||
|
|
||||||
if (SDL_SemWait(Android_ResumeSem) == 0) {
|
if (SDL_SemWait(Android_ResumeSem) == 0) {
|
||||||
#else
|
|
||||||
if (isPaused) {
|
|
||||||
if (SDL_SemTryWait(Android_ResumeSem) == 0) {
|
|
||||||
#endif
|
|
||||||
isPaused = 0;
|
isPaused = 0;
|
||||||
|
|
||||||
ANDROIDAUDIO_ResumeDevices();
|
ANDROIDAUDIO_ResumeDevices();
|
||||||
|
|
||||||
/* Restore the GL Context from here, as this operation is thread dependent */
|
/* Restore the GL Context from here, as this operation is thread dependent */
|
||||||
if (!SDL_HasEvent(SDL_QUIT)) {
|
if (!SDL_HasEvent(SDL_QUIT)) {
|
||||||
SDL_LockMutex(Android_ActivityMutex);
|
SDL_LockMutex(Android_ActivityMutex);
|
||||||
@ -99,9 +101,7 @@ Android_PumpEvents(_THIS)
|
|||||||
SDL_UnlockMutex(Android_ActivityMutex);
|
SDL_UnlockMutex(Android_ActivityMutex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
#if SDL_ANDROID_BLOCK_ON_PAUSE
|
|
||||||
if (isPausing || SDL_SemTryWait(Android_PauseSem) == 0) {
|
if (isPausing || SDL_SemTryWait(Android_PauseSem) == 0) {
|
||||||
/* We've been signaled to pause, but before we block ourselves,
|
/* We've been signaled to pause, but before we block ourselves,
|
||||||
we need to make sure that certain key events have reached the app */
|
we need to make sure that certain key events have reached the app */
|
||||||
@ -113,19 +113,46 @@ Android_PumpEvents(_THIS)
|
|||||||
isPaused = 1;
|
isPaused = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
void
|
||||||
|
Android_PumpEvents(_THIS)
|
||||||
|
{
|
||||||
|
static int isPaused = 0;
|
||||||
|
|
||||||
|
if (isPaused) {
|
||||||
|
if (SDL_SemTryWait(Android_ResumeSem) == 0) {
|
||||||
|
|
||||||
|
isPaused = 0;
|
||||||
|
|
||||||
|
ANDROIDAUDIO_ResumeDevices();
|
||||||
|
|
||||||
|
/* Restore the GL Context from here, as this operation is thread dependent */
|
||||||
|
if (!SDL_HasEvent(SDL_QUIT)) {
|
||||||
|
SDL_LockMutex(Android_ActivityMutex);
|
||||||
|
android_egl_context_restore(Android_Window);
|
||||||
|
SDL_UnlockMutex(Android_ActivityMutex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
if (SDL_SemTryWait(Android_PauseSem) == 0) {
|
if (SDL_SemTryWait(Android_PauseSem) == 0) {
|
||||||
|
|
||||||
SDL_LockMutex(Android_ActivityMutex);
|
SDL_LockMutex(Android_ActivityMutex);
|
||||||
android_egl_context_backup(Android_Window);
|
android_egl_context_backup(Android_Window);
|
||||||
SDL_UnlockMutex(Android_ActivityMutex);
|
SDL_UnlockMutex(Android_ActivityMutex);
|
||||||
|
|
||||||
ANDROIDAUDIO_PauseDevices();
|
ANDROIDAUDIO_PauseDevices();
|
||||||
|
|
||||||
isPaused = 1;
|
isPaused = 1;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* SDL_VIDEO_DRIVER_ANDROID */
|
#endif /* SDL_VIDEO_DRIVER_ANDROID */
|
||||||
|
|
||||||
/* vi: set ts=4 sw=4 expandtab: */
|
/* vi: set ts=4 sw=4 expandtab: */
|
||||||
|
Loading…
Reference in New Issue
Block a user