Emit SDL_RENDER_DEVICE_RESET on Android when the GLES context is recreated

main
Gabriel Jacobo 2014-03-24 11:04:42 -03:00
parent dd81dad1ad
commit 1f92c9dcac
2 changed files with 12 additions and 1 deletions

View File

@ -1,6 +1,15 @@
This is a list of major changes in SDL's version history. This is a list of major changes in SDL's version history.
---------------------------------------------------------------------------
2.0.4:
---------------------------------------------------------------------------
General:
* Added an event SDL_RENDER_DEVICE_RESET that is sent from the D3D renderers
when the D3D device is lost, and from Android's event loop when the GLES
context had to be re created.
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
2.0.3: 2.0.3:
--------------------------------------------------------------------------- ---------------------------------------------------------------------------

View File

@ -35,12 +35,14 @@ void android_egl_context_restore();
void void
android_egl_context_restore() android_egl_context_restore()
{ {
SDL_Event event;
SDL_WindowData *data = (SDL_WindowData *) Android_Window->driverdata; SDL_WindowData *data = (SDL_WindowData *) Android_Window->driverdata;
if (SDL_GL_MakeCurrent(Android_Window, (SDL_GLContext) data->egl_context) < 0) { if (SDL_GL_MakeCurrent(Android_Window, (SDL_GLContext) data->egl_context) < 0) {
/* The context is no longer valid, create a new one */ /* The context is no longer valid, create a new one */
/* FIXME: Notify the user that the context changed and textures need to be re created */
data->egl_context = (EGLContext) SDL_GL_CreateContext(Android_Window); data->egl_context = (EGLContext) SDL_GL_CreateContext(Android_Window);
SDL_GL_MakeCurrent(Android_Window, (SDL_GLContext) data->egl_context); SDL_GL_MakeCurrent(Android_Window, (SDL_GLContext) data->egl_context);
event.type = SDL_RENDER_DEVICE_RESET;
SDL_PushEvent(&event);
} }
} }