summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationLayerController.java
diff options
context:
space:
mode:
authorŁukasz Paczos <lukasz.paczos@mapbox.com>2019-07-31 12:01:59 +0300
committerŁukasz Paczos <lukasz.paczos@mapbox.com>2019-07-31 18:17:16 +0300
commit300f0b59805c45c4d8e6a8033077ef64892f4f24 (patch)
treea50f0e8646075b9c1b674f4a3cf737eb58ab94e2 /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationLayerController.java
parent275d8ffb2b33766f3847aeca0b6bfdc05f13ec26 (diff)
downloadqtlocation-mapboxgl-300f0b59805c45c4d8e6a8033077ef64892f4f24.tar.gz
[android] do not reinitialize camera/render mode if it hasn't changed
Camera/Render mode updates can be streamed from various different stateless sources and we should make sure to skip an update to a mode that's already set. This keeps the callbacks tidy and does not perform unnecessary work.
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationLayerController.java')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationLayerController.java79
1 files changed, 38 insertions, 41 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationLayerController.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationLayerController.java
index c0c6017cd6..b18a7c4742 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationLayerController.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationLayerController.java
@@ -111,11 +111,8 @@ final class LocationLayerController {
removeLayers();
addLayers();
if (isHidden) {
- for (String layerId : layerSet) {
- setLayerVisibility(layerId, false);
- }
+ hide();
}
- setRenderMode(renderMode);
}
this.options = options;
@@ -131,49 +128,24 @@ final class LocationLayerController {
styleAccuracy(options.accuracyAlpha(), options.accuracyColor());
styleScaling(options);
determineIconsSource(options);
+
+ if (!isHidden) {
+ show();
+ }
}
void setRenderMode(@RenderMode.Mode int renderMode) {
- int previousMode = this.renderMode;
+ if (this.renderMode == renderMode) {
+ return;
+ }
this.renderMode = renderMode;
if (!isHidden) {
- boolean isStale = locationFeature.getBooleanProperty(PROPERTY_LOCATION_STALE);
- switch (renderMode) {
- case RenderMode.NORMAL:
- styleForeground(options);
- setLayerVisibility(SHADOW_LAYER, true);
- setLayerVisibility(FOREGROUND_LAYER, true);
- setLayerVisibility(BACKGROUND_LAYER, true);
- setLayerVisibility(ACCURACY_LAYER, !isStale);
- setLayerVisibility(BEARING_LAYER, false);
- break;
- case RenderMode.COMPASS:
- styleForeground(options);
- setLayerVisibility(SHADOW_LAYER, true);
- setLayerVisibility(FOREGROUND_LAYER, true);
- setLayerVisibility(BACKGROUND_LAYER, true);
- setLayerVisibility(ACCURACY_LAYER, !isStale);
- setLayerVisibility(BEARING_LAYER, true);
- break;
- case RenderMode.GPS:
- styleForeground(options);
- setLayerVisibility(SHADOW_LAYER, false);
- setLayerVisibility(FOREGROUND_LAYER, true);
- setLayerVisibility(BACKGROUND_LAYER, true);
- setLayerVisibility(ACCURACY_LAYER, false);
- setLayerVisibility(BEARING_LAYER, false);
- break;
- default:
- break;
- }
-
- determineIconsSource(options);
- }
-
- if (previousMode != renderMode) {
- internalRenderModeChangedListener.onRenderModeChanged(renderMode);
+ styleForeground(options);
+ show();
}
+ determineIconsSource(options);
+ internalRenderModeChangedListener.onRenderModeChanged(renderMode);
}
int getRenderMode() {
@@ -186,7 +158,32 @@ final class LocationLayerController {
void show() {
isHidden = false;
- setRenderMode(renderMode);
+ boolean isStale = locationFeature.getBooleanProperty(PROPERTY_LOCATION_STALE);
+ switch (renderMode) {
+ case RenderMode.NORMAL:
+ setLayerVisibility(SHADOW_LAYER, true);
+ setLayerVisibility(FOREGROUND_LAYER, true);
+ setLayerVisibility(BACKGROUND_LAYER, true);
+ setLayerVisibility(ACCURACY_LAYER, !isStale);
+ setLayerVisibility(BEARING_LAYER, false);
+ break;
+ case RenderMode.COMPASS:
+ setLayerVisibility(SHADOW_LAYER, true);
+ setLayerVisibility(FOREGROUND_LAYER, true);
+ setLayerVisibility(BACKGROUND_LAYER, true);
+ setLayerVisibility(ACCURACY_LAYER, !isStale);
+ setLayerVisibility(BEARING_LAYER, true);
+ break;
+ case RenderMode.GPS:
+ setLayerVisibility(SHADOW_LAYER, false);
+ setLayerVisibility(FOREGROUND_LAYER, true);
+ setLayerVisibility(BACKGROUND_LAYER, true);
+ setLayerVisibility(ACCURACY_LAYER, false);
+ setLayerVisibility(BEARING_LAYER, false);
+ break;
+ default:
+ break;
+ }
}
void hide() {