diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java index 12e4c675e..62c273a51 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java @@ -2,8 +2,8 @@ package com.mapbox.mapboxsdk.maps; import android.content.Context; import android.graphics.PointF; -import android.os.Build; import android.opengl.GLSurfaceView; +import android.os.Build; import android.os.Bundle; import android.support.annotation.CallSuper; import android.support.annotation.IntDef; @@ -27,7 +27,7 @@ import com.mapbox.mapboxsdk.annotations.Annotation; import com.mapbox.mapboxsdk.annotations.MarkerViewManager; import com.mapbox.mapboxsdk.constants.MapboxConstants; import com.mapbox.mapboxsdk.constants.Style; -import com.mapbox.mapboxsdk.egl.EGLConfigChooser; +import com.mapbox.mapboxsdk.maps.renderer.GLSurfaceViewMapRenderer; import com.mapbox.mapboxsdk.maps.renderer.MapRenderer; import com.mapbox.mapboxsdk.maps.widgets.CompassView; import com.mapbox.mapboxsdk.maps.widgets.MyLocationView; @@ -49,7 +49,6 @@ import timber.log.Timber; import static com.mapbox.mapboxsdk.maps.widgets.CompassView.TIME_MAP_NORTH_ANIMATION; import static com.mapbox.mapboxsdk.maps.widgets.CompassView.TIME_WAIT_IDLE; -import static android.opengl.GLSurfaceView.RENDERMODE_WHEN_DIRTY; /** *
@@ -86,7 +85,7 @@ public class MapView extends FrameLayout {
private Bundle savedInstanceState;
private final CopyOnWriteArrayList
+ * Called from the renderer frontend to schedule a render.
+ */
+ @Override
+ public void requestRender() {
+ glSurfaceView.requestRender();
+ }
+
+ /**
+ * May be called from any thread.
+ *
+ * Schedules work to be performed on the MapRenderer thread.
+ *
+ * @param runnable the runnable to execute
+ */
+ @Override
+ public void queueEvent(Runnable runnable) {
+ glSurfaceView.queueEvent(runnable);
+ }
+
+
+}
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 3f43522e0..a7c0fa377 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
@@ -1,7 +1,7 @@
package com.mapbox.mapboxsdk.maps.renderer;
import android.content.Context;
-import android.opengl.GLSurfaceView;
+import android.support.annotation.CallSuper;
import com.mapbox.mapboxsdk.maps.MapboxMap;
import com.mapbox.mapboxsdk.storage.FileSource;
@@ -16,17 +16,14 @@ import javax.microedition.khronos.opengles.GL10;
* render on the one end and acts as a scheduler to request work to
* be performed on the GL thread on the other.
*/
-public class MapRenderer implements GLSurfaceView.Renderer, MapRendererScheduler {
+public abstract class MapRenderer implements MapRendererScheduler {
// Holds the pointer to the native peer after initialisation
private long nativePtr = 0;
- private final GLSurfaceView glSurfaceView;
-
private MapboxMap.OnFpsChangedListener onFpsChangedListener;
- public MapRenderer(Context context, GLSurfaceView glSurfaceView) {
- this.glSurfaceView = glSurfaceView;
+ public MapRenderer(Context context) {
FileSource fileSource = FileSource.getInstance(context);
float pixelRatio = context.getResources().getDisplayMetrics().density;
@@ -36,17 +33,26 @@ public class MapRenderer implements GLSurfaceView.Renderer, MapRendererScheduler
nativeInitialize(this, fileSource, pixelRatio, programCacheDir);
}
+ public void onPause() {
+ // Implement if needed
+ }
+
+ public void onResume() {
+ // Implement if needed
+ }
+
+
public void setOnFpsChangedListener(MapboxMap.OnFpsChangedListener listener) {
onFpsChangedListener = listener;
}
- @Override
- public void onSurfaceCreated(GL10 gl, EGLConfig config) {
+ @CallSuper
+ protected void onSurfaceCreated(GL10 gl, EGLConfig config) {
nativeOnSurfaceCreated();
}
- @Override
- public void onSurfaceChanged(GL10 gl, int width, int height) {
+ @CallSuper
+ protected void onSurfaceChanged(GL10 gl, int width, int height) {
if (width < 0) {
throw new IllegalArgumentException("fbWidth cannot be negative.");
}
@@ -69,8 +75,8 @@ public class MapRenderer implements GLSurfaceView.Renderer, MapRendererScheduler
nativeOnSurfaceChanged(width, height);
}
- @Override
- public void onDrawFrame(GL10 gl) {
+ @CallSuper
+ protected void onDrawFrame(GL10 gl) {
nativeRender();
if (onFpsChangedListener != null) {
@@ -78,28 +84,6 @@ public class MapRenderer implements GLSurfaceView.Renderer, MapRendererScheduler
}
}
- /**
- * May be called from any thread.
- *
- * Called from the renderer frontend to schedule a render.
- */
- @Override
- public void requestRender() {
- glSurfaceView.requestRender();
- }
-
- /**
- * May be called from any thread.
- *
- * Schedules work to be performed on the MapRenderer thread.
- *
- * @param runnable the runnable to execute
- */
- @Override
- public void queueEvent(Runnable runnable) {
- glSurfaceView.queueEvent(runnable);
- }
-
/**
* May be called from any thread.
*
@@ -109,6 +93,7 @@ public class MapRenderer implements GLSurfaceView.Renderer, MapRendererScheduler
* @param runnable the runnable to execute
* @see MapRendererRunnable
*/
+ @CallSuper
void queueEvent(MapRendererRunnable runnable) {
this.queueEvent((Runnable) runnable);
}
@@ -118,6 +103,7 @@ public class MapRenderer implements GLSurfaceView.Renderer, MapRendererScheduler
float pixelRatio,
String programCacheDir);
+ @CallSuper
@Override
protected native void finalize() throws Throwable;