summaryrefslogtreecommitdiff
path: root/platform/default/mbgl/renderer/async_renderer_frontend.cpp
diff options
context:
space:
mode:
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