summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThiago Marcos P. Santos <thiago@mapbox.com>2015-11-09 17:10:02 +0200
committerThiago Marcos P. Santos <thiago@mapbox.com>2015-12-01 00:00:09 +0200
commit1d623322044c4650bb39c9224f596341a23f490f (patch)
treee9bf800c1e04aec08c4eb4b6b4ead4b7843f0199 /src
parent6762cd0ca90aaafa81eab3a638fee1d1eb391b74 (diff)
downloadqtlocation-mapboxgl-1d623322044c4650bb39c9224f596341a23f490f.tar.gz
[core] Use AsyncTask on the MapContext
Diffstat (limited to 'src')
-rw-r--r--src/mbgl/map/map_context.cpp29
-rw-r--r--src/mbgl/map/map_context.hpp9
-rw-r--r--src/mbgl/util/async_task.hpp28
3 files changed, 17 insertions, 49 deletions
diff --git a/src/mbgl/map/map_context.cpp b/src/mbgl/map/map_context.cpp
index f00b3eaf55..400b2880da 100644
--- a/src/mbgl/map/map_context.cpp
+++ b/src/mbgl/map/map_context.cpp
@@ -16,7 +16,6 @@
#include <mbgl/sprite/sprite_store.hpp>
#include <mbgl/util/gl_object_store.hpp>
-#include <mbgl/util/uv_detail.hpp>
#include <mbgl/util/worker.hpp>
#include <mbgl/util/texture_pool.hpp>
#include <mbgl/util/exception.hpp>
@@ -29,16 +28,16 @@ namespace mbgl {
MapContext::MapContext(View& view_, FileSource& fileSource, MapData& data_)
: view(view_),
data(data_),
- asyncUpdate(std::make_unique<uv::async>(util::RunLoop::getLoop(), [this] { update(); })),
- asyncInvalidate(std::make_unique<uv::async>(util::RunLoop::getLoop(), [&view_] { view_.invalidate(); })),
+ asyncUpdate([this] { update(); }),
+ asyncInvalidate([&view_] { view_.invalidate(); }),
texturePool(std::make_unique<TexturePool>()) {
assert(util::ThreadContext::currentlyOn(util::ThreadType::Map));
util::ThreadContext::setFileSource(&fileSource);
util::ThreadContext::setGLObjectStore(&glObjectStore);
- asyncUpdate->unref();
- asyncInvalidate->unref();
+ asyncUpdate.unref();
+ asyncInvalidate.unref();
view.activate();
}
@@ -76,14 +75,14 @@ void MapContext::pause() {
view.activate();
- asyncInvalidate->send();
+ asyncInvalidate.send();
}
void MapContext::triggerUpdate(const TransformState& state, const Update flags) {
transformState = state;
updateFlags |= flags;
- asyncUpdate->send();
+ asyncUpdate.send();
}
void MapContext::setStyleURL(const std::string& url) {
@@ -152,7 +151,7 @@ void MapContext::loadStyleJSON(const std::string& json, const std::string& base)
data.loading = true;
updateFlags |= Update::DefaultTransition | Update::Classes | Update::Zoom | Update::Annotations;
- asyncUpdate->send();
+ asyncUpdate.send();
}
void MapContext::update() {
@@ -184,7 +183,7 @@ void MapContext::update() {
style->update(transformState, *texturePool);
if (data.mode == MapMode::Continuous) {
- asyncInvalidate->send();
+ asyncInvalidate.send();
} else if (callback && style->isLoaded()) {
renderSync(transformState, frameData);
}
@@ -223,7 +222,7 @@ void MapContext::renderStill(const TransformState& state, const FrameData& frame
frameData = frame;
updateFlags |= Update::RenderStill;
- asyncUpdate->send();
+ asyncUpdate.send();
}
bool MapContext::renderSync(const TransformState& state, const FrameData& frame) {
@@ -253,10 +252,10 @@ bool MapContext::renderSync(const TransformState& state, const FrameData& frame)
if (style->hasTransitions()) {
updateFlags |= Update::Classes;
- asyncUpdate->send();
+ asyncUpdate.send();
} else if (painter->needsAnimation()) {
updateFlags |= Update::Repaint;
- asyncUpdate->send();
+ asyncUpdate.send();
}
return isLoaded();
@@ -284,7 +283,7 @@ void MapContext::setSourceTileCacheSize(size_t size) {
for (const auto &source : style->sources) {
source->setCacheSize(sourceCacheSize);
}
- asyncInvalidate->send();
+ asyncInvalidate.send();
}
}
@@ -294,7 +293,7 @@ void MapContext::onLowMemory() {
for (const auto &source : style->sources) {
source->onLowMemory();
}
- asyncInvalidate->send();
+ asyncInvalidate.send();
}
void MapContext::setSprite(const std::string& name, std::shared_ptr<const SpriteImage> sprite) {
@@ -312,7 +311,7 @@ void MapContext::onTileDataChanged() {
assert(util::ThreadContext::currentlyOn(util::ThreadType::Map));
updateFlags |= Update::Repaint;
- asyncUpdate->send();
+ asyncUpdate.send();
}
void MapContext::onResourceLoadingFailed(std::exception_ptr error) {
diff --git a/src/mbgl/map/map_context.hpp b/src/mbgl/map/map_context.hpp
index f4df3aae25..c0ee68a614 100644
--- a/src/mbgl/map/map_context.hpp
+++ b/src/mbgl/map/map_context.hpp
@@ -6,15 +6,12 @@
#include <mbgl/map/transform_state.hpp>
#include <mbgl/map/map.hpp>
#include <mbgl/style/style.hpp>
+#include <mbgl/util/async_task.hpp>
#include <mbgl/util/gl_object_store.hpp>
#include <mbgl/util/ptr.hpp>
#include <vector>
-namespace uv {
-class async;
-}
-
namespace mbgl {
class View;
@@ -77,8 +74,8 @@ private:
util::GLObjectStore glObjectStore;
Update updateFlags = Update::Nothing;
- std::unique_ptr<uv::async> asyncUpdate;
- std::unique_ptr<uv::async> asyncInvalidate;
+ util::AsyncTask asyncUpdate;
+ util::AsyncTask asyncInvalidate;
std::unique_ptr<TexturePool> texturePool;
std::unique_ptr<Painter> painter;
diff --git a/src/mbgl/util/async_task.hpp b/src/mbgl/util/async_task.hpp
deleted file mode 100644
index 09bdab94d7..0000000000
--- a/src/mbgl/util/async_task.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef MBGL_UTIL_ASYNC_TASK
-#define MBGL_UTIL_ASYNC_TASK
-
-#include <mbgl/util/noncopyable.hpp>
-
-#include <memory>
-#include <functional>
-
-namespace mbgl {
-namespace util {
-
-class AsyncTask : private util::noncopyable {
-public:
- AsyncTask(std::function<void()>&&);
- ~AsyncTask();
-
- void send();
- void unref();
-
-private:
- class Impl;
- std::unique_ptr<Impl> impl;
-};
-
-}
-}
-
-#endif