summaryrefslogtreecommitdiff
path: root/platform/default/mbgl/renderer/async_renderer_frontend.cpp
diff options
context:
space:
mode:
authorIvo van Dongen <info@ivovandongen.nl>2017-06-13 10:50:16 +0300
committerIvo van Dongen <ivovandongen@users.noreply.github.com>2017-07-18 10:45:12 +0200
commit3832f8d0d8194b81ea34a045e19b0d5bc7a89e25 (patch)
treebbb4b277e1e74bde457271b9b9a5b6a9ec3ad5fb /platform/default/mbgl/renderer/async_renderer_frontend.cpp
parent39a732d7ae3cb1b927d94c4b1154b42d9565356a (diff)
downloadqtlocation-mapboxgl-3832f8d0d8194b81ea34a045e19b0d5bc7a89e25.tar.gz
[core] renderer interface
Diffstat (limited to 'platform/default/mbgl/renderer/async_renderer_frontend.cpp')
-rw-r--r--platform/default/mbgl/renderer/async_renderer_frontend.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/platform/default/mbgl/renderer/async_renderer_frontend.cpp b/platform/default/mbgl/renderer/async_renderer_frontend.cpp
new file mode 100644
index 0000000000..37b4e60cf6
--- /dev/null
+++ b/platform/default/mbgl/renderer/async_renderer_frontend.cpp
@@ -0,0 +1,38 @@
+#include "async_renderer_frontend.hpp"
+#include <mbgl/renderer/renderer.hpp>
+
+namespace mbgl {
+
+AsyncRendererFrontend::AsyncRendererFrontend(std::unique_ptr<Renderer> renderer_, View& view_)
+ : renderer(std::move(renderer_))
+ , view(view_)
+ , asyncInvalidate([this] {
+ if (renderer && updateParameters) {
+ renderer->render(view, *updateParameters);
+ }
+ }) {
+}
+
+AsyncRendererFrontend::~AsyncRendererFrontend() = default;
+
+void AsyncRendererFrontend::reset() {
+ assert(renderer);
+ renderer.reset();
+}
+
+void AsyncRendererFrontend::update(std::shared_ptr<UpdateParameters> updateParameters_) {
+ updateParameters = updateParameters_;
+ asyncInvalidate.send();
+}
+
+void AsyncRendererFrontend::setObserver(RendererObserver& observer_) {
+ assert(renderer);
+ renderer->setObserver(&observer_);
+}
+
+Renderer* AsyncRendererFrontend::getRenderer() {
+ assert(renderer);
+ return renderer.get();
+}
+
+} // namespace mbgl