diff options
author | Ivo van Dongen <info@ivovandongen.nl> | 2017-07-17 20:34:03 +0200 |
---|---|---|
committer | Ivo van Dongen <info@ivovandongen.nl> | 2017-07-17 20:36:05 +0200 |
commit | ce3538d30016de4c6d3839eee1e368b1c27b38f6 (patch) | |
tree | 07cf7952860fde7e77ed81105ed568feb1f9e4e2 /platform/darwin | |
parent | f290c6ddfb5ad0358a6c7ba38ab12420f4441ad8 (diff) | |
download | qtlocation-mapboxgl-upstream/render-interface.tar.gz |
[macos] fix animationsupstream/render-interface
Diffstat (limited to 'platform/darwin')
-rw-r--r-- | platform/darwin/src/MGLRendererFrontend.h | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/platform/darwin/src/MGLRendererFrontend.h b/platform/darwin/src/MGLRendererFrontend.h index 5d0c784a4f..839d3be773 100644 --- a/platform/darwin/src/MGLRendererFrontend.h +++ b/platform/darwin/src/MGLRendererFrontend.h @@ -1,5 +1,7 @@ #include <mbgl/renderer/renderer.hpp> #include <mbgl/renderer/renderer_frontend.hpp> +#include <mbgl/util/async_task.hpp> +#include <mbgl/util/optional.hpp> /** @@ -9,10 +11,16 @@ class MGLRenderFrontend : public mbgl::RendererFrontend { public: - MGLRenderFrontend(std::unique_ptr<mbgl::Renderer> renderer_, MGLMapView* nativeView_, mbgl::View* mbglView_) + MGLRenderFrontend(std::unique_ptr<mbgl::Renderer> renderer_, MGLMapView* nativeView_, mbgl::View* mbglView_, bool async = false) : renderer(std::move(renderer_)) , nativeView(nativeView_) , mbglView(mbglView_) { + + if (async) { + asyncInvalidate.emplace([&]() { + [nativeView setNeedsGLDisplay]; + }); + } } void reset() override { @@ -23,7 +31,11 @@ public: void update(std::shared_ptr<mbgl::UpdateParameters> updateParameters_) override { updateParameters = std::move(updateParameters_); - [nativeView setNeedsGLDisplay]; + if (asyncInvalidate) { + asyncInvalidate->send(); + } else { + [nativeView setNeedsGLDisplay]; + } } void setObserver(mbgl::RendererObserver& observer) override { @@ -51,4 +63,5 @@ private: __weak MGLMapView *nativeView = nullptr; mbgl::View *mbglView = nullptr; std::shared_ptr<mbgl::UpdateParameters> updateParameters; + mbgl::optional<mbgl::util::AsyncTask> asyncInvalidate; }; |