diff options
Diffstat (limited to 'platform/android/src/map_renderer.cpp')
-rw-r--r-- | platform/android/src/map_renderer.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
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, |