summaryrefslogtreecommitdiff
path: root/platform/darwin
diff options
context:
space:
mode:
authorIvo van Dongen <info@ivovandongen.nl>2017-07-17 20:34:03 +0200
committerIvo van Dongen <info@ivovandongen.nl>2017-07-17 20:36:05 +0200
commitce3538d30016de4c6d3839eee1e368b1c27b38f6 (patch)
tree07cf7952860fde7e77ed81105ed568feb1f9e4e2 /platform/darwin
parentf290c6ddfb5ad0358a6c7ba38ab12420f4441ad8 (diff)
downloadqtlocation-mapboxgl-upstream/render-interface.tar.gz
[macos] fix animationsupstream/render-interface
Diffstat (limited to 'platform/darwin')
-rw-r--r--platform/darwin/src/MGLRendererFrontend.h17
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;
};