diff options
Diffstat (limited to '3rdparty/SDL2/src/video/android/SDL_androidevents.c')
-rw-r--r-- | 3rdparty/SDL2/src/video/android/SDL_androidevents.c | 125 |
1 files changed, 0 insertions, 125 deletions
diff --git a/3rdparty/SDL2/src/video/android/SDL_androidevents.c b/3rdparty/SDL2/src/video/android/SDL_androidevents.c deleted file mode 100644 index c3cd4cc1b5b..00000000000 --- a/3rdparty/SDL2/src/video/android/SDL_androidevents.c +++ /dev/null @@ -1,125 +0,0 @@ -/* - Simple DirectMedia Layer - Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org> - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. -*/ -#include "../../SDL_internal.h" - -#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" -#include "SDL_androidwindow.h" - - -void android_egl_context_backup(); -void android_egl_context_restore(); - -#if SDL_AUDIO_DRIVER_ANDROID -void ANDROIDAUDIO_ResumeDevices(void); -void ANDROIDAUDIO_PauseDevices(void); -#else -static void ANDROIDAUDIO_ResumeDevices(void) {} -static void ANDROIDAUDIO_PauseDevices(void) {} -#endif - -void -android_egl_context_restore() -{ - SDL_Event event; - SDL_WindowData *data = (SDL_WindowData *) Android_Window->driverdata; - if (SDL_GL_MakeCurrent(Android_Window, (SDL_GLContext) data->egl_context) < 0) { - /* The context is no longer valid, create a new one */ - data->egl_context = (EGLContext) SDL_GL_CreateContext(Android_Window); - SDL_GL_MakeCurrent(Android_Window, (SDL_GLContext) data->egl_context); - event.type = SDL_RENDER_DEVICE_RESET; - SDL_PushEvent(&event); - } -} - -void -android_egl_context_backup() -{ - /* Keep a copy of the EGL Context so we can try to restore it when we resume */ - SDL_WindowData *data = (SDL_WindowData *) Android_Window->driverdata; - data->egl_context = SDL_GL_GetCurrentContext(); - /* We need to do this so the EGLSurface can be freed */ - SDL_GL_MakeCurrent(Android_Window, NULL); -} - -void -Android_PumpEvents(_THIS) -{ - static int isPaused = 0; -#if SDL_ANDROID_BLOCK_ON_PAUSE - 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) { - /* Make sure this is the last thing we do before pausing */ - android_egl_context_backup(); - ANDROIDAUDIO_PauseDevices(); - if(SDL_SemWait(Android_ResumeSem) == 0) { -#else - if (isPaused) { - if(SDL_SemTryWait(Android_ResumeSem) == 0) { -#endif - isPaused = 0; - ANDROIDAUDIO_ResumeDevices(); - /* Restore the GL Context from here, as this operation is thread dependent */ - if (!SDL_HasEvent(SDL_QUIT)) { - android_egl_context_restore(); - } - } - } - else { -#if SDL_ANDROID_BLOCK_ON_PAUSE - if( isPausing || SDL_SemTryWait(Android_PauseSem) == 0 ) { - /* We've been signaled to pause, but before we block ourselves, - we need to make sure that certain key events have reached the app */ - if (SDL_HasEvent(SDL_WINDOWEVENT) || SDL_HasEvent(SDL_APP_WILLENTERBACKGROUND) || SDL_HasEvent(SDL_APP_DIDENTERBACKGROUND) ) { - isPausing = 1; - } - else { - isPausing = 0; - isPaused = 1; - } - } -#else - if(SDL_SemTryWait(Android_PauseSem) == 0) { - android_egl_context_backup(); - ANDROIDAUDIO_PauseDevices(); - isPaused = 1; - } -#endif - } -} - -#endif /* SDL_VIDEO_DRIVER_ANDROID */ - -/* vi: set ts=4 sw=4 expandtab: */ |