From 96fef8172b2e9484b0631961d36aac0f381c00bf Mon Sep 17 00:00:00 2001 From: Ivo van Dongen Date: Fri, 22 Feb 2019 15:01:55 +0200 Subject: [android] re-create renderer on surface update after app backgrounding (in case egl context is preserved, but surface is not) --- platform/android/src/map_renderer.cpp | 7 ++++++- platform/android/src/map_renderer.hpp | 4 +++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/platform/android/src/map_renderer.cpp b/platform/android/src/map_renderer.cpp index cff021afd2..cd8953e4cf 100644 --- a/platform/android/src/map_renderer.cpp +++ b/platform/android/src/map_renderer.cpp @@ -184,7 +184,12 @@ void MapRenderer::onSurfaceCreated(JNIEnv&) { } } -void MapRenderer::onSurfaceChanged(JNIEnv&, jint width, jint height) { +void MapRenderer::onSurfaceChanged(JNIEnv& env, jint width, jint height) { + if (!renderer) { + // In case the surface has been destroyed (due to app back-grounding) + onSurfaceCreated(env); + } + backend->resizeFramebuffer(width, height); framebufferSizeChanged = true; requestRender(); diff --git a/platform/android/src/map_renderer.hpp b/platform/android/src/map_renderer.hpp index 8c2f28a4df..fdc3600d02 100644 --- a/platform/android/src/map_renderer.hpp +++ b/platform/android/src/map_renderer.hpp @@ -94,7 +94,9 @@ private: void onSurfaceChanged(JNIEnv&, jint width, jint height); - // Called on Main thread +private: + // Called on either Main or GL thread // + void onSurfaceDestroyed(JNIEnv&); private: -- cgit v1.2.1