diff options
author | tobrun <tobrun.van.nuland@gmail.com> | 2019-04-16 15:03:26 +0200 |
---|---|---|
committer | tobrun <tobrun.van.nuland@gmail.com> | 2019-04-16 15:03:26 +0200 |
commit | 82a2f2a3c770788b4d7ec8452ef3a5ccf8a1af51 (patch) | |
tree | 91752657055d6b0a41380c704faf438c531394e4 | |
parent | dde289a846c6ee48626dbe509ec6e86fd3e4f9b9 (diff) | |
download | qtlocation-mapboxgl-upstream/tvn-unify-flag-handling.tar.gz |
[android] - reset rendererupstream/tvn-unify-flag-handling
4 files changed, 13 insertions, 5 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRenderer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRenderer.java index 22e717d8ff..d8cfb1641a 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRenderer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRenderer.java @@ -132,6 +132,8 @@ public abstract class MapRenderer implements MapRendererScheduler { private native void nativeOnSurfaceDestroyed(); + protected native void nativeReset(); + private native void nativeRender(); private long timeElapsed; diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/GLSurfaceViewMapRenderer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/GLSurfaceViewMapRenderer.java index 0b7861eb79..338369f2cf 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/GLSurfaceViewMapRenderer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/GLSurfaceViewMapRenderer.java @@ -39,14 +39,13 @@ public class GLSurfaceViewMapRenderer extends MapRenderer implements GLSurfaceVi public void surfaceCreated(SurfaceHolder holder) { super.surfaceCreated(holder); hasSurface = true; - } @Override public void surfaceDestroyed(SurfaceHolder holder) { super.surfaceDestroyed(holder); hasSurface = false; - onSurfaceDestroyed(); + nativeReset(); } }); } diff --git a/platform/android/src/map_renderer.cpp b/platform/android/src/map_renderer.cpp index 36d23c1849..64c00585f8 100644 --- a/platform/android/src/map_renderer.cpp +++ b/platform/android/src/map_renderer.cpp @@ -195,12 +195,17 @@ void MapRenderer::onSurfaceChanged(JNIEnv& env, jint width, jint height) { requestRender(); } -void MapRenderer::onSurfaceDestroyed(JNIEnv&) { +void MapRenderer::onRendererReset(JNIEnv&) { // Make sure to destroy the renderer on the GL Thread auto self = ActorRef<MapRenderer>(*this, mailbox); self.ask(&MapRenderer::resetRenderer).wait(); } +// needs to be called on GL thread +void MapRenderer::onSurfaceDestroyed(JNIEnv&) { + resetRenderer(); +} + // Static methods // void MapRenderer::registerNative(jni::JNIEnv& env) { @@ -214,6 +219,7 @@ void MapRenderer::registerNative(jni::JNIEnv& env) { jni::MakePeer<MapRenderer, const jni::Object<MapRenderer>&, jni::jfloat, const jni::String&, const jni::String&>, "nativeInitialize", "finalize", METHOD(&MapRenderer::render, "nativeRender"), + METHOD(&MapRenderer::onRendererReset, "nativeReset"), METHOD(&MapRenderer::onSurfaceCreated, "nativeOnSurfaceCreated"), METHOD(&MapRenderer::onSurfaceChanged, diff --git a/platform/android/src/map_renderer.hpp b/platform/android/src/map_renderer.hpp index 57265cebb1..efbe55af7f 100644 --- a/platform/android/src/map_renderer.hpp +++ b/platform/android/src/map_renderer.hpp @@ -94,10 +94,11 @@ private: void onSurfaceChanged(JNIEnv&, jint width, jint height); + void onSurfaceDestroyed(JNIEnv&); + private: // Called on either Main or GL thread // - - void onSurfaceDestroyed(JNIEnv&); + void onRendererReset(JNIEnv&); private: jni::WeakReference<jni::Object<MapRenderer>, jni::EnvAttachingDeleter> javaPeer; |