diff options
Diffstat (limited to 'platform/android/src/file_source.cpp')
-rw-r--r-- | platform/android/src/file_source.cpp | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/platform/android/src/file_source.cpp b/platform/android/src/file_source.cpp index 5d19c506bc..6a9d7badb0 100644 --- a/platform/android/src/file_source.cpp +++ b/platform/android/src/file_source.cpp @@ -1,15 +1,13 @@ #include "file_source.hpp" #include <mbgl/actor/actor.hpp> +#include <mbgl/actor/scheduler.hpp> #include <mbgl/storage/resource_transform.hpp> #include <mbgl/util/logging.hpp> -#include <mbgl/util/run_loop.hpp> #include "asset_manager_file_source.hpp" #include "jni/generic_global_ref_deleter.hpp" -#include <string> - namespace mbgl { namespace android { @@ -45,7 +43,7 @@ void FileSource::setAPIBaseUrl(jni::JNIEnv& env, jni::String url) { void FileSource::setResourceTransform(jni::JNIEnv& env, jni::Object<FileSource::ResourceTransformCallback> transformCallback) { if (transformCallback) { - resourceTransform = std::make_unique<Actor<ResourceTransform>>(*util::RunLoop::Get(), + resourceTransform = std::make_unique<Actor<ResourceTransform>>(*Scheduler::GetCurrent(), // Capture the ResourceTransformCallback object as a managed global into // the lambda. It is released automatically when we're setting a new ResourceTransform in // a subsequent call. @@ -64,6 +62,25 @@ void FileSource::setResourceTransform(jni::JNIEnv& env, jni::Object<FileSource:: } } +void FileSource::resume(jni::JNIEnv&) { + if (!activationCounter) { + activationCounter = optional<int>(1) ; + return; + } + + activationCounter.value()++; + if (activationCounter == 1) { + fileSource->resume(); + } +} + +void FileSource::pause(jni::JNIEnv&) { + activationCounter.value()--; + if (activationCounter == 0) { + fileSource->pause(); + } +} + jni::Class<FileSource> FileSource::javaClass; FileSource* FileSource::getNativePeer(jni::JNIEnv& env, jni::Object<FileSource> jFileSource) { @@ -93,7 +110,9 @@ void FileSource::registerNative(jni::JNIEnv& env) { METHOD(&FileSource::getAccessToken, "getAccessToken"), METHOD(&FileSource::setAccessToken, "setAccessToken"), METHOD(&FileSource::setAPIBaseUrl, "setApiBaseUrl"), - METHOD(&FileSource::setResourceTransform, "setResourceTransform") + METHOD(&FileSource::setResourceTransform, "setResourceTransform"), + METHOD(&FileSource::resume, "activate"), + METHOD(&FileSource::pause, "deactivate") ); } |