From 1a68241bb0dc916f1fc1a780f7eddddf42bf892a Mon Sep 17 00:00:00 2001 From: Leith Bade Date: Mon, 9 Nov 2015 21:33:30 +1100 Subject: [PATCH] [android] Fix Canvas.quickReject() crash on API 15 Also tidy android.os.Build refs Fixes #2976 --- .../com/mapbox/mapboxsdk/annotations/SpriteFactory.java | 2 +- .../src/main/java/com/mapbox/mapboxsdk/views/MapView.java | 2 +- .../java/com/mapbox/mapboxsdk/views/UserLocationView.java | 8 +++++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/SpriteFactory.java b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/SpriteFactory.java index 78f7673f8..3395c5039 100644 --- a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/SpriteFactory.java +++ b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/SpriteFactory.java @@ -35,7 +35,7 @@ public final class SpriteFactory { DisplayMetrics metrics = new DisplayMetrics(); WindowManager wm = (WindowManager) mMapView.getContext().getSystemService(Context.WINDOW_SERVICE); - if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { realMetrics = new DisplayMetrics(); wm.getDefaultDisplay().getRealMetrics(realMetrics); } diff --git a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java index f3493d721..eeca273b6 100644 --- a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java +++ b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java @@ -617,7 +617,7 @@ public final class MapView extends FrameLayout { .getSystemService(Context.ACTIVITY_SERVICE); activityManager.getMemoryInfo(memoryInfo); long maxMemory = memoryInfo.availMem; - if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { maxMemory = memoryInfo.totalMem; } mNativeMapView = new diff --git a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/UserLocationView.java b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/UserLocationView.java index db5b320ba..b36ac1ab6 100644 --- a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/UserLocationView.java +++ b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/UserLocationView.java @@ -227,8 +227,10 @@ final class UserLocationView extends View { RectF dotBounds = mShowDirection ? mUserLocationBearingDrawableBoundsF : mUserLocationDrawableBoundsF; dotBounds = mStaleMarker ? mUserLocationStaleDrawableBoundsF : dotBounds; - boolean willDraw = - mShowAccuracy && !mStaleMarker && !canvas.quickReject(mAccuracyPath, Canvas.EdgeType.AA); + boolean willDraw = true; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN || !canvas.isHardwareAccelerated()) { + willDraw = mShowAccuracy && !mStaleMarker && !canvas.quickReject(mAccuracyPath, Canvas.EdgeType.AA); + } willDraw |= !canvas.quickReject(dotBounds, Canvas.EdgeType.AA); if (willDraw) { @@ -463,7 +465,7 @@ final class UserLocationView extends View { private boolean isStale(Location location) { if (location != null) { long ageInNanos; - if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { ageInNanos = SystemClock.elapsedRealtimeNanos() - location.getElapsedRealtimeNanos(); } else {