diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/GLSurfaceViewMapRenderer.java')
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/GLSurfaceViewMapRenderer.java | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/GLSurfaceViewMapRenderer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/GLSurfaceViewMapRenderer.java new file mode 100644 index 0000000000..d0ec9f9495 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/GLSurfaceViewMapRenderer.java @@ -0,0 +1,84 @@ +package com.mapbox.mapboxsdk.maps.renderer; + +import android.content.Context; +import android.opengl.GLSurfaceView; + +import com.mapbox.mapboxsdk.egl.EGLConfigChooser; + +import javax.microedition.khronos.egl.EGLConfig; +import javax.microedition.khronos.opengles.GL10; + +import static android.opengl.GLSurfaceView.RENDERMODE_WHEN_DIRTY; + +/** + * The {@link GLSurfaceViewMapRenderer} encapsulates the GL thread and + * {@link GLSurfaceView} specifics to render the map. + * + * @see MapRenderer + */ +public class GLSurfaceViewMapRenderer extends MapRenderer implements GLSurfaceView.Renderer { + + private final GLSurfaceView glSurfaceView; + + public GLSurfaceViewMapRenderer(Context context, GLSurfaceView glSurfaceView) { + super(context); + this.glSurfaceView = glSurfaceView; + glSurfaceView.setEGLContextClientVersion(2); + glSurfaceView.setEGLConfigChooser(new EGLConfigChooser()); + glSurfaceView.setRenderer(this); + glSurfaceView.setRenderMode(RENDERMODE_WHEN_DIRTY); + } + + @Override + public void onPause() { + if (glSurfaceView != null) { + glSurfaceView.onPause(); + } + } + + @Override + public void onResume() { + if (glSurfaceView != null) { + glSurfaceView.onResume(); + } + } + + @Override + public void onSurfaceCreated(GL10 gl, EGLConfig config) { + super.onSurfaceCreated(gl, config); + } + + @Override + public void onSurfaceChanged(GL10 gl, int width, int height) { + super.onSurfaceChanged(gl, width, height); + } + + @Override + public void onDrawFrame(GL10 gl) { + super.onDrawFrame(gl); + } + + /** + * May be called from any thread. + * <p> + * Called from the renderer frontend to schedule a render. + */ + @Override + public void requestRender() { + glSurfaceView.requestRender(); + } + + /** + * May be called from any thread. + * <p> + * Schedules work to be performed on the MapRenderer thread. + * + * @param runnable the runnable to execute + */ + @Override + public void queueEvent(Runnable runnable) { + glSurfaceView.queueEvent(runnable); + } + + +} |