diff options
Diffstat (limited to 'platform/android/src')
-rw-r--r-- | platform/android/src/asset_manager_file_source.cpp | 5 | ||||
-rw-r--r-- | platform/android/src/http_file_source.cpp | 14 | ||||
-rw-r--r-- | platform/android/src/image.cpp | 12 | ||||
-rwxr-xr-x | platform/android/src/native_map_view.cpp | 4 |
4 files changed, 20 insertions, 15 deletions
diff --git a/platform/android/src/asset_manager_file_source.cpp b/platform/android/src/asset_manager_file_source.cpp index aa65e3ff48..404177ba95 100644 --- a/platform/android/src/asset_manager_file_source.cpp +++ b/platform/android/src/asset_manager_file_source.cpp @@ -23,8 +23,9 @@ public: Response response; if (AAsset* asset = AAssetManager_open(assetManager, path.c_str(), AASSET_MODE_BUFFER)) { - response.data = std::make_shared<std::string>( - reinterpret_cast<const char*>(AAsset_getBuffer(asset)), AAsset_getLength64(asset)); + response.data = { { reinterpret_cast<const char*>(AAsset_getBuffer(asset)), + static_cast<size_t>(AAsset_getLength64(asset)) }, + false }; AAsset_close(asset); } else { response.error = std::make_unique<Response::Error>(Response::Error::Reason::NotFound, diff --git a/platform/android/src/http_file_source.cpp b/platform/android/src/http_file_source.cpp index 8eb9416e9d..7602c1914e 100644 --- a/platform/android/src/http_file_source.cpp +++ b/platform/android/src/http_file_source.cpp @@ -30,7 +30,8 @@ public: jni::String etag, jni::String modified, jni::String cacheControl, jni::String expires, jni::String retryAfter, jni::String xRateLimitReset, - jni::Array<jni::jbyte> body); + jni::Array<jni::jbyte> body, + jni::jboolean compressed); static jni::Class<HTTPRequest> javaClass; jni::UniqueObject<HTTPRequest> javaRequest; @@ -104,7 +105,8 @@ void HTTPRequest::onResponse(jni::JNIEnv& env, int code, jni::String etag, jni::String modified, jni::String cacheControl, jni::String expires, jni::String jRetryAfter, jni::String jXRateLimitReset, - jni::Array<jni::jbyte> body) { + jni::Array<jni::jbyte> body, + jni::jboolean compressed) { using Error = Response::Error; @@ -128,11 +130,11 @@ void HTTPRequest::onResponse(jni::JNIEnv& env, int code, if (code == 200) { if (body) { - auto data = std::make_shared<std::string>(body.Length(env), char()); - jni::GetArrayRegion(env, *body, 0, data->size(), reinterpret_cast<jbyte*>(&(*data)[0])); - response.data = data; + std::string data(static_cast<size_t>(body.Length(env)), char()); + jni::GetArrayRegion(env, *body, 0, data.size(), reinterpret_cast<jbyte*>(&data[0])); + response.data = Blob{ std::move(data), static_cast<bool>(compressed) }; } else { - response.data = std::make_shared<std::string>(); + response.data = {}; } } else if (code == 204 || (code == 404 && resource.kind == Resource::Kind::Tile)) { response.noContent = true; diff --git a/platform/android/src/image.cpp b/platform/android/src/image.cpp index 2a33944b18..dd98a3a6c8 100644 --- a/platform/android/src/image.cpp +++ b/platform/android/src/image.cpp @@ -8,14 +8,16 @@ namespace mbgl { -PremultipliedImage decodeImage(const std::string& string) { +PremultipliedImage decodeImage(Blob blob) { auto env{ android::AttachEnv() }; - auto array = jni::Array<jni::jbyte>::New(*env, string.size()); - jni::SetArrayRegion(*env, *array, 0, string.size(), - reinterpret_cast<const signed char*>(string.data())); + const auto string = blob.uncompressedData(); - auto bitmap = android::BitmapFactory::DecodeByteArray(*env, array, 0, string.size()); + auto array = jni::Array<jni::jbyte>::New(*env, string->size()); + jni::SetArrayRegion(*env, *array, 0, string->size(), + reinterpret_cast<const signed char*>(string->data())); + + auto bitmap = android::BitmapFactory::DecodeByteArray(*env, array, 0, string->size()); return android::Bitmap::GetImage(*env, bitmap); } diff --git a/platform/android/src/native_map_view.cpp b/platform/android/src/native_map_view.cpp index 67fc132204..c52aad6405 100755 --- a/platform/android/src/native_map_view.cpp +++ b/platform/android/src/native_map_view.cpp @@ -188,11 +188,11 @@ void NativeMapView::setStyleUrl(jni::JNIEnv& env, jni::String url) { } jni::String NativeMapView::getStyleJson(jni::JNIEnv& env) { - return jni::Make<jni::String>(env, map->getStyle().getJSON()); + return jni::Make<jni::String>(env, *map->getStyle().getJSON().uncompressedData()); } void NativeMapView::setStyleJson(jni::JNIEnv& env, jni::String json) { - map->getStyle().loadJSON(jni::Make<std::string>(env, json)); + map->getStyle().loadJSON(Blob{ jni::Make<std::string>(env, json), false }); } void NativeMapView::setLatLngBounds(jni::JNIEnv& env, jni::Object<mbgl::android::LatLngBounds> jBounds) { |