diff options
author | Ivo van Dongen <info@ivovandongen.nl> | 2017-09-18 19:00:34 +0300 |
---|---|---|
committer | Ivo van Dongen <ivovandongen@users.noreply.github.com> | 2017-09-22 23:33:56 +0300 |
commit | b0c06c764b0f9900dac3707dc5af398b41b6aa5b (patch) | |
tree | 17f9f816a86edf6a0b756f5c92d69ac82a68f665 /platform/android/MapboxGLAndroidSDK/src/main/java | |
parent | bef58c38a841c30e5a8358d167f8d105f92fb63a (diff) | |
download | qtlocation-mapboxgl-b0c06c764b0f9900dac3707dc5af398b41b6aa5b.tar.gz |
[android] re-implemented the fps listener api
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java')
4 files changed, 54 insertions, 35 deletions
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 271bd155be..9f6cd7ab5e 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 @@ -435,21 +435,6 @@ public class MapView extends FrameLayout { nativeMapView.onLowMemory(); } - // Called when debug mode is enabled to update a FPS counter - // Called via JNI from NativeMapView - // Forward to any listener - protected void onFpsChanged(final double fps) { - final MapboxMap.OnFpsChangedListener listener = mapboxMap.getOnFpsChangedListener(); - if (listener != null) { - post(new Runnable() { - @Override - public void run() { - listener.onFpsChanged(fps); - } - }); - } - } - /** * <p> * Loads a new map style from the specified URL. diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java index 6c7670b91c..3afc29f99b 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java @@ -1711,6 +1711,7 @@ public final class MapboxMap { */ public void setOnFpsChangedListener(@Nullable OnFpsChangedListener listener) { onFpsChangedListener = listener; + nativeMapView.setOnFpsChangedListener(listener); } // used by MapView diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java index 5be74258fd..3ce6aab581 100755 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java @@ -20,7 +20,6 @@ import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.geometry.LatLngBounds; import com.mapbox.mapboxsdk.geometry.ProjectedMeters; import com.mapbox.mapboxsdk.maps.renderer.MapRenderer; -import com.mapbox.mapboxsdk.maps.renderer.MapRendererScheduler; import com.mapbox.mapboxsdk.storage.FileSource; import com.mapbox.mapboxsdk.style.layers.CannotAddLayerException; import com.mapbox.mapboxsdk.style.layers.Filter; @@ -54,7 +53,7 @@ final class NativeMapView { private final FileSource fileSource; // Used to schedule work on the MapRenderer Thread - private MapRendererScheduler scheduler; + private MapRenderer mapRenderer; // Device density private final float pixelRatio; @@ -71,7 +70,7 @@ final class NativeMapView { // public NativeMapView(final MapView mapView, MapRenderer mapRenderer) { - this.scheduler = mapRenderer; + this.mapRenderer = mapRenderer; this.mapView = mapView; Context context = mapView.getContext(); @@ -106,7 +105,7 @@ final class NativeMapView { return; } - scheduler.requestRender(); + mapRenderer.requestRender(); } public void resizeView(int width, int height) { @@ -510,13 +509,6 @@ final class NativeMapView { return nativeGetDebug(); } - public void setEnableFps(boolean enable) { - if (isDestroyedOn("setEnableFps")) { - return; - } - nativeSetEnableFps(enable); - } - public boolean isFullyLoaded() { if (isDestroyedOn("isFullyLoaded")) { return false; @@ -835,13 +827,6 @@ final class NativeMapView { } } - protected void onFpsChanged(double fps) { - if (isDestroyedOn("OnFpsChanged")) { - return; - } - mapView.onFpsChanged(fps); - } - protected void onSnapshotReady(Bitmap mapContent) { if (isDestroyedOn("OnSnapshotReady")) { return; @@ -947,8 +932,6 @@ final class NativeMapView { private native boolean nativeGetDebug(); - private native void nativeSetEnableFps(boolean enable); - private native boolean nativeIsFullyLoaded(); private native void nativeSetReachability(boolean status); @@ -1076,4 +1059,28 @@ final class NativeMapView { nativeTakeSnapshot(); } + public void setOnFpsChangedListener(final MapboxMap.OnFpsChangedListener listener) { + mapRenderer.queueEvent(new Runnable() { + + @Override + public void run() { + mapRenderer.setOnFpsChangedListener(new MapboxMap.OnFpsChangedListener() { + + @Override + public void onFpsChanged(final double fps) { + mapView.post(new Runnable() { + + @Override + public void run() { + listener.onFpsChanged(fps); + } + + }); + } + + }); + } + + }); + } } 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 772ecb79fb..3f43522e01 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 @@ -3,6 +3,7 @@ package com.mapbox.mapboxsdk.maps.renderer; import android.content.Context; import android.opengl.GLSurfaceView; +import com.mapbox.mapboxsdk.maps.MapboxMap; import com.mapbox.mapboxsdk.storage.FileSource; import javax.microedition.khronos.egl.EGLConfig; @@ -22,6 +23,8 @@ public class MapRenderer implements GLSurfaceView.Renderer, MapRendererScheduler private final GLSurfaceView glSurfaceView; + private MapboxMap.OnFpsChangedListener onFpsChangedListener; + public MapRenderer(Context context, GLSurfaceView glSurfaceView) { this.glSurfaceView = glSurfaceView; @@ -33,6 +36,10 @@ public class MapRenderer implements GLSurfaceView.Renderer, MapRendererScheduler nativeInitialize(this, fileSource, pixelRatio, programCacheDir); } + public void setOnFpsChangedListener(MapboxMap.OnFpsChangedListener listener) { + onFpsChangedListener = listener; + } + @Override public void onSurfaceCreated(GL10 gl, EGLConfig config) { nativeOnSurfaceCreated(); @@ -65,6 +72,10 @@ public class MapRenderer implements GLSurfaceView.Renderer, MapRendererScheduler @Override public void onDrawFrame(GL10 gl) { nativeRender(); + + if (onFpsChangedListener != null) { + updateFps(); + } } /** @@ -116,4 +127,19 @@ public class MapRenderer implements GLSurfaceView.Renderer, MapRendererScheduler private native void nativeRender(); + private long frames; + private long timeElapsed; + + private void updateFps() { + frames++; + long currentTime = System.nanoTime(); + double fps = 0; + if (currentTime - timeElapsed >= 1) { + fps = frames / ((currentTime - timeElapsed) / 1E9); + onFpsChangedListener.onFpsChanged(fps); + timeElapsed = currentTime; + frames = 0; + } + } + } |