summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortobrun <tobrun.van.nuland@gmail.com>2019-04-16 15:03:26 +0200
committertobrun <tobrun.van.nuland@gmail.com>2019-04-16 15:03:26 +0200
commit82a2f2a3c770788b4d7ec8452ef3a5ccf8a1af51 (patch)
tree91752657055d6b0a41380c704faf438c531394e4
parentdde289a846c6ee48626dbe509ec6e86fd3e4f9b9 (diff)
downloadqtlocation-mapboxgl-upstream/tvn-unify-flag-handling.tar.gz
[android] - reset rendererupstream/tvn-unify-flag-handling
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRenderer.java2
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/GLSurfaceViewMapRenderer.java3
-rw-r--r--platform/android/src/map_renderer.cpp8
-rw-r--r--platform/android/src/map_renderer.hpp5
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;