Skip to content

Commit

Permalink
Android: when event loop is not blocking in pause, backup EGL context…
Browse files Browse the repository at this point in the history
… (Bug 4578)

Backup the EGL context when SDL_APP_DIDENTERBACKGROUND has been removed from the
event queue.
  • Loading branch information
1bsyl committed Apr 12, 2019
1 parent 00c824a commit bd344c2
Showing 1 changed file with 27 additions and 12 deletions.
39 changes: 27 additions & 12 deletions src/video/android/SDL_androidevents.c
Expand Up @@ -130,8 +130,7 @@ Android_PumpEvents_Blocking(_THIS)
* has reached the app */
if (SDL_NumberOfEvents(SDL_APP_DIDENTERBACKGROUND) > SDL_SemValue(Android_PauseSem)) {
videodata->isPausing = 1;
}
else {
} else {
videodata->isPausing = 0;
videodata->isPaused = 1;
}
Expand All @@ -143,8 +142,23 @@ void
Android_PumpEvents_NonBlocking(_THIS)
{
SDL_VideoData *videodata = (SDL_VideoData *)_this->driverdata;
static int backup_context;

if (videodata->isPaused) {

if (backup_context) {

SDL_LockMutex(Android_ActivityMutex);
android_egl_context_backup(Android_Window);
SDL_UnlockMutex(Android_ActivityMutex);

ANDROIDAUDIO_PauseDevices();
openslES_PauseDevices();

backup_context = 0;
}


if (SDL_SemTryWait(Android_ResumeSem) == 0) {

videodata->isPaused = 0;
Expand All @@ -165,16 +179,17 @@ Android_PumpEvents_NonBlocking(_THIS)
}
}
} else {
if (SDL_SemTryWait(Android_PauseSem) == 0) {

SDL_LockMutex(Android_ActivityMutex);
android_egl_context_backup(Android_Window);
SDL_UnlockMutex(Android_ActivityMutex);

ANDROIDAUDIO_PauseDevices();
openslES_PauseDevices();

videodata->isPaused = 1;
if (videodata->isPausing || SDL_SemTryWait(Android_PauseSem) == 0) {
/* We've been signaled to pause (potentially several times), but before we block ourselves,
* we need to make sure that the very last event (of the first pause sequence, if several)
* has reached the app */
if (SDL_NumberOfEvents(SDL_APP_DIDENTERBACKGROUND) > SDL_SemValue(Android_PauseSem)) {
videodata->isPausing = 1;
} else {
videodata->isPausing = 0;
videodata->isPaused = 1;
backup_context = 1;
}
}
}
}
Expand Down

0 comments on commit bd344c2

Please sign in to comment.