summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvo van Dongen <info@ivovandongen.nl>2019-02-22 15:01:55 +0200
committerIvo van Dongen <info@ivovandongen.nl>2019-02-22 15:01:55 +0200
commitbc4fd56ff8b651603f49fcd1caf239408f3326eb (patch)
tree39d9ed5111682d236471fd908f6990463f3436e2
parent1aea17ccd9c324db7b076edf27faa1c5a12f279b (diff)
downloadqtlocation-mapboxgl-bc4fd56ff8b651603f49fcd1caf239408f3326eb.tar.gz
[android] re-create renderer on surface update after app backgrounding (in case egl context is preserved, but surface is not)
-rw-r--r--platform/android/src/map_renderer.cpp7
-rw-r--r--platform/android/src/map_renderer.hpp4
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: