diff options
author | Łukasz Paczos <lukas.paczos@gmail.com> | 2019-06-04 13:00:15 +0200 |
---|---|---|
committer | Łukasz Paczos <lukas.paczos@gmail.com> | 2019-06-04 15:05:29 +0200 |
commit | eb43d1f13390b3edc1ebb7115b5f98325ff0d1d9 (patch) | |
tree | 28a2a1a41a1756e0bfd652aa87e91056c125b13d /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/MapboxGLSurfaceView.java | |
parent | 892699a39a7fb569a8536f96d2eecc89d0a4e904 (diff) | |
download | qtlocation-mapboxgl-eb43d1f13390b3edc1ebb7115b5f98325ff0d1d9.tar.gz |
[android] reset the native renderer only when the GL thread exitsupstream/lp-detach-gl-thread
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/MapboxGLSurfaceView.java')
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/MapboxGLSurfaceView.java | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/MapboxGLSurfaceView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/MapboxGLSurfaceView.java new file mode 100644 index 0000000000..ccdbc58220 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/MapboxGLSurfaceView.java @@ -0,0 +1,54 @@ +package com.mapbox.mapboxsdk.maps.renderer.glsurfaceview; + +import android.content.Context; +import android.opengl.GLSurfaceView; +import android.support.annotation.NonNull; +import android.util.AttributeSet; + +/** + * {@link GLSurfaceView} extension that notifies a listener when the view is detached from window, + * which is the point of destruction of the GL thread. + */ +public class MapboxGLSurfaceView extends GLSurfaceView { + + private OnGLSurfaceViewDetachedListener detachedListener; + + public MapboxGLSurfaceView(Context context) { + super(context); + } + + public MapboxGLSurfaceView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + protected void onDetachedFromWindow() { + if (detachedListener != null) { + detachedListener.onGLSurfaceViewDetached(); + } + super.onDetachedFromWindow(); + } + + /** + * Set a listener that gets notified when the view is detached from window. + * + * @param detachedListener listener + */ + public void setDetachedListener(@NonNull OnGLSurfaceViewDetachedListener detachedListener) { + if (this.detachedListener != null) { + throw new IllegalArgumentException("Detached from window listener has been already set."); + } + this.detachedListener = detachedListener; + } + + /** + * Listener interface that notifies when a {@link MapboxGLSurfaceView} is detached from window. + */ + public interface OnGLSurfaceViewDetachedListener { + + /** + * Called when a {@link MapboxGLSurfaceView} is detached from window. + */ + void onGLSurfaceViewDetached(); + } +} |