summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeng Liu <peng.liu@mapbox.com>2019-09-23 15:29:32 +0300
committerPeng Liu <peng.liu@mapbox.com>2019-09-23 16:07:09 +0300
commit38e5a2cc69b0a3e51bdc92e0873c091df2a82ab6 (patch)
treeef8c6764ed1dfd701dea182d622e4486dfbbb844
parent8f2a7ecd51ad6562066b9d3ccaacd180da8486ac (diff)
downloadqtlocation-mapboxgl-upstream/peng-fix-camera-padding.tar.gz
[android] Fix the crash when camera position padding is set.upstream/peng-fix-camera-padding
-rw-r--r--platform/android/src/map/camera_position.cpp21
1 files changed, 11 insertions, 10 deletions
diff --git a/platform/android/src/map/camera_position.cpp b/platform/android/src/map/camera_position.cpp
index cbf5f2e408..4266b64fdf 100644
--- a/platform/android/src/map/camera_position.cpp
+++ b/platform/android/src/map/camera_position.cpp
@@ -44,19 +44,20 @@ mbgl::CameraOptions CameraPosition::getCameraOptions(jni::JNIEnv& env, const jni
static auto tilt = javaClass.GetField<jni::jdouble>(env, "tilt");
static auto zoom = javaClass.GetField<jni::jdouble>(env, "zoom");
static auto paddingField = javaClass.GetField<jni::Array<jni::jdouble>>(env, "padding");
- static auto padding = position.Get(env, paddingField);
+ auto padding = position.Get(env, paddingField);
auto center = LatLng::getLatLng(env, position.Get(env, target));
- return mbgl::CameraOptions {
- center,
- padding ? EdgeInsets {padding.Get(env, 1) * pixelRatio, padding.Get(env, 0) * pixelRatio,
- padding.Get(env, 3) * pixelRatio, padding.Get(env, 2) * pixelRatio} : (EdgeInsets) {},
- {},
- position.Get(env, zoom),
- position.Get(env, bearing),
- position.Get(env, tilt)
- };
+ return mbgl::CameraOptions{center,
+ padding && padding.Length(env) == 4 ? EdgeInsets{padding.Get(env, 1) * pixelRatio,
+ padding.Get(env, 0) * pixelRatio,
+ padding.Get(env, 3) * pixelRatio,
+ padding.Get(env, 2) * pixelRatio}
+ : (EdgeInsets){},
+ {},
+ position.Get(env, zoom),
+ position.Get(env, bearing),
+ position.Get(env, tilt)};
}
void CameraPosition::registerNative(jni::JNIEnv &env) {