summaryrefslogtreecommitdiff
path: root/platform/android/src
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/src')
-rw-r--r--platform/android/src/android_renderer_frontend.cpp11
-rw-r--r--platform/android/src/android_renderer_frontend.hpp8
2 files changed, 16 insertions, 3 deletions
diff --git a/platform/android/src/android_renderer_frontend.cpp b/platform/android/src/android_renderer_frontend.cpp
index 2a03d9de9e..8b4a25a4d9 100644
--- a/platform/android/src/android_renderer_frontend.cpp
+++ b/platform/android/src/android_renderer_frontend.cpp
@@ -4,6 +4,7 @@
#include <mbgl/renderer/renderer.hpp>
#include <mbgl/renderer/renderer_observer.hpp>
#include <mbgl/storage/file_source.hpp>
+#include <mbgl/util/async_task.hpp>
#include <mbgl/util/thread.hpp>
#include <mbgl/util/run_loop.hpp>
@@ -56,7 +57,11 @@ private:
AndroidRendererFrontend::AndroidRendererFrontend(MapRenderer& mapRenderer_)
: mapRenderer(mapRenderer_)
- , mapRunLoop(util::RunLoop::Get()) {
+ , mapRunLoop(util::RunLoop::Get())
+ , updateAsyncTask(std::make_unique<util::AsyncTask>([this]() {
+ mapRenderer.update(std::move(updateParams));
+ mapRenderer.requestRender();
+ })) {
}
AndroidRendererFrontend::~AndroidRendererFrontend() = default;
@@ -73,8 +78,8 @@ void AndroidRendererFrontend::setObserver(RendererObserver& observer) {
}
void AndroidRendererFrontend::update(std::shared_ptr<UpdateParameters> params) {
- mapRenderer.update(std::move(params));
- mapRenderer.requestRender();
+ updateParams = std::move(params);
+ updateAsyncTask->send();
}
void AndroidRendererFrontend::reduceMemoryUse() {
diff --git a/platform/android/src/android_renderer_frontend.hpp b/platform/android/src/android_renderer_frontend.hpp
index b61904e388..9bd64e4819 100644
--- a/platform/android/src/android_renderer_frontend.hpp
+++ b/platform/android/src/android_renderer_frontend.hpp
@@ -18,6 +18,12 @@ namespace mbgl {
class RenderedQueryOptions;
class SourceQueryOptions;
+namespace util {
+
+class AsyncTask;
+
+} // namespace util
+
namespace android {
class AndroidRendererFrontend : public RendererFrontend {
@@ -44,6 +50,8 @@ public:
private:
MapRenderer& mapRenderer;
util::RunLoop* mapRunLoop;
+ std::unique_ptr<util::AsyncTask> updateAsyncTask;
+ std::shared_ptr<UpdateParameters> updateParams;
};
} // namespace android