summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author“osana” <osana.babayan@mapbox.com>2018-02-16 09:11:42 -0500
committer“osana” <osana.babayan@mapbox.com>2018-02-17 09:15:39 -0500
commit67f653ada6d364499dba6fe8e2caa0674fcb7f38 (patch)
treef89fec34f0bc6bcb7964e8ae3d4043c18e58d6af
parentd3e6fc5eff6b50490cf7e10c87a09c5eff7cda35 (diff)
downloadqtlocation-mapboxgl-upstream/osana-DelLocalRef-11212.tar.gz
[android] missing DeleteLocalRefupstream/osana-DelLocalRef-11212
-rw-r--r--platform/android/src/geojson/feature_collection.cpp25
-rw-r--r--platform/android/src/geojson/line_string.cpp3
-rw-r--r--platform/android/src/geojson/multi_polygon.cpp2
-rw-r--r--platform/android/src/geojson/point.cpp26
4 files changed, 35 insertions, 21 deletions
diff --git a/platform/android/src/geojson/feature_collection.cpp b/platform/android/src/geojson/feature_collection.cpp
index 59f1e317e6..06f8f10b9a 100644
--- a/platform/android/src/geojson/feature_collection.cpp
+++ b/platform/android/src/geojson/feature_collection.cpp
@@ -1,3 +1,4 @@
+#include <android/log.h>
#include "feature_collection.hpp"
#include "feature.hpp"
@@ -7,19 +8,23 @@ namespace android {
namespace geojson {
mbgl::FeatureCollection FeatureCollection::convert(jni::JNIEnv& env, jni::Object<FeatureCollection> jCollection) {
- auto jFeatureList = FeatureCollection::features(env, jCollection);
- auto jFeatures = java::util::List::toArray<Feature>(env, jFeatureList);
- auto size = size_t(jFeatures.Length(env));
-
auto collection = mbgl::FeatureCollection();
- collection.reserve(size);
- for (size_t i = 0; i < size; i++) {
- auto jFeature = jFeatures.Get(env, i);
- collection.push_back(Feature::convert(env, jFeature));
- jni::DeleteLocalRef(env, jFeature);
- }
+ if (jCollection) {
+ auto jFeatureList = FeatureCollection::features(env, jCollection);
+ auto jFeatures = java::util::List::toArray<Feature>(env, jFeatureList);
+ auto size = size_t(jFeatures.Length(env));
+ collection.reserve(size);
+ for (size_t i = 0; i < size; i++) {
+ auto jFeature = jFeatures.Get(env, i);
+ collection.push_back(Feature::convert(env, jFeature));
+ jni::DeleteLocalRef(env, jFeature);
+ }
+
+ jni::DeleteLocalRef(env, jFeatures);
+ jni::DeleteLocalRef(env, jFeatureList);
+ }
return collection;
}
diff --git a/platform/android/src/geojson/line_string.cpp b/platform/android/src/geojson/line_string.cpp
index 9e99c72c4c..8eebd53550 100644
--- a/platform/android/src/geojson/line_string.cpp
+++ b/platform/android/src/geojson/line_string.cpp
@@ -23,8 +23,9 @@ mapbox::geojson::line_string LineString::convert(jni::JNIEnv &env, jni::Object<j
if (jPointList) {
auto jPointArray = java::util::List::toArray<Point>(env, jPointList);
-
auto size = jPointArray.Length(env);
+ lineString.reserve(size);
+
for (std::size_t i = 0; i < size; i++) {
auto jPoint = jPointArray.Get(env, i);
lineString.push_back(Point::convert(env, jPoint));
diff --git a/platform/android/src/geojson/multi_polygon.cpp b/platform/android/src/geojson/multi_polygon.cpp
index f4eb0f6b2a..aadba8c8a6 100644
--- a/platform/android/src/geojson/multi_polygon.cpp
+++ b/platform/android/src/geojson/multi_polygon.cpp
@@ -22,8 +22,8 @@ mapbox::geojson::multi_polygon MultiPolygon::convert(jni::JNIEnv &env, jni::Obje
jni::DeleteLocalRef(env, jPositionListsList);
}
- jni::DeleteLocalRef(env, jPointListsListList);
jni::DeleteLocalRef(env, jPointListsListArray);
+ jni::DeleteLocalRef(env, jPointListsListList);
}
return multiPolygon;
diff --git a/platform/android/src/geojson/point.cpp b/platform/android/src/geojson/point.cpp
index 5feb1b8521..d064547145 100644
--- a/platform/android/src/geojson/point.cpp
+++ b/platform/android/src/geojson/point.cpp
@@ -1,6 +1,8 @@
+#include <android/log.h>
#include "point.hpp"
#include "../java/util.hpp"
#include "../java_types.hpp"
+#include "../style/value.hpp"
namespace mbgl {
namespace android {
@@ -19,17 +21,23 @@ mapbox::geojson::point Point::convert(jni::JNIEnv &env, jni::Object<Point> jPoin
}
mapbox::geojson::point Point::convert(jni::JNIEnv &env, jni::Object<java::util::List/*<Double>*/> jDoubleList) {
- auto jDoubleArray = java::util::List::toArray<double>(env, jDoubleList);
+ mapbox::geojson::point point;
+
+ if (jDoubleList) {
+ auto jDoubleArray = java::util::List::toArray<jobject>(env, jDoubleList);
- jni::jdouble lon = jni::CallMethod<jni::jdouble>(env,
- jDoubleArray.Get(env, 0),
- *java::Number::doubleValueMethodId);
- jni::jdouble lat = jni::CallMethod<jni::jdouble>(env,
- jDoubleArray.Get(env, 1),
- *java::Number::doubleValueMethodId);
- mapbox::geojson::point point(lon, lat);
- jni::DeleteLocalRef(env, jDoubleArray);
+ auto lonObject = jDoubleArray.Get(env, 0);
+ auto latObject = jDoubleArray.Get(env, 1);
+ point.x = jni::CallMethod<jni::jdouble>(env, lonObject,
+ *java::Number::doubleValueMethodId);
+ point.y = jni::CallMethod<jni::jdouble>(env, latObject,
+ *java::Number::doubleValueMethodId);
+
+ jni::DeleteLocalRef(env, lonObject);
+ jni::DeleteLocalRef(env, latObject);
+ jni::DeleteLocalRef(env, jDoubleArray);
+ }
return point;
}