diff options
author | Thiago Marcos P. Santos <thiago@mapbox.com> | 2015-11-09 17:10:02 +0200 |
---|---|---|
committer | Thiago Marcos P. Santos <thiago@mapbox.com> | 2015-12-01 00:00:09 +0200 |
commit | 1d623322044c4650bb39c9224f596341a23f490f (patch) | |
tree | e9bf800c1e04aec08c4eb4b6b4ead4b7843f0199 /src | |
parent | 6762cd0ca90aaafa81eab3a638fee1d1eb391b74 (diff) | |
download | qtlocation-mapboxgl-1d623322044c4650bb39c9224f596341a23f490f.tar.gz |
[core] Use AsyncTask on the MapContext
Diffstat (limited to 'src')
-rw-r--r-- | src/mbgl/map/map_context.cpp | 29 | ||||
-rw-r--r-- | src/mbgl/map/map_context.hpp | 9 | ||||
-rw-r--r-- | src/mbgl/util/async_task.hpp | 28 |
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 |