Emit SDL_RENDER_DEVICE_RESET on Android when the GLES context is recreated
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
diff --git a/WhatsNew.txt b/WhatsNew.txt
index bcbdcd1..cadd315 100644
--- a/WhatsNew.txt
+++ b/WhatsNew.txt
@@ -2,6 +2,15 @@
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:
---------------------------------------------------------------------------
diff --git a/src/video/android/SDL_androidevents.c b/src/video/android/SDL_androidevents.c
index 164126c..907d730 100644
--- a/src/video/android/SDL_androidevents.c
+++ b/src/video/android/SDL_androidevents.c
@@ -35,12 +35,14 @@ void android_egl_context_restore();
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 */
- /* FIXME: Notify the user that the context changed and textures need to be re created */
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);
}
}