summaryrefslogtreecommitdiff
path: root/test/src/mbgl/test/stub_renderer_frontend.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/src/mbgl/test/stub_renderer_frontend.cpp')
-rw-r--r--test/src/mbgl/test/stub_renderer_frontend.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/test/src/mbgl/test/stub_renderer_frontend.cpp b/test/src/mbgl/test/stub_renderer_frontend.cpp
new file mode 100644
index 0000000000..7edcfd397e
--- /dev/null
+++ b/test/src/mbgl/test/stub_renderer_frontend.cpp
@@ -0,0 +1,52 @@
+#include <mbgl/test/stub_renderer_frontend.hpp>
+
+#include <mbgl/map/view.hpp>
+#include <mbgl/renderer/renderer.hpp>
+
+namespace mbgl {
+
+StubRendererFrontend::StubRendererFrontend(std::unique_ptr<Renderer> renderer_, InvalidateCallback invalidate)
+ : renderer(std::move(renderer_))
+ , asyncInvalidate([this, invalidate=std::move(invalidate)]() {
+ invalidate(*this);
+ }) {
+}
+
+StubRendererFrontend::StubRendererFrontend(std::unique_ptr<Renderer> renderer_, View& view)
+ : renderer(std::move(renderer_))
+ , asyncInvalidate([&]() {
+ this->render(view);
+ }) {
+}
+
+StubRendererFrontend::~StubRendererFrontend() {
+ reset();
+}
+
+void StubRendererFrontend::reset() {
+ if (renderer) {
+ renderer.reset();
+ }
+}
+
+void StubRendererFrontend::setObserver(RendererObserver& observer) {
+ if (!renderer) return;
+ renderer->setObserver(&observer);
+}
+
+void StubRendererFrontend::update(std::shared_ptr<UpdateParameters> params) {
+ updateParameters = std::move(params);
+ asyncInvalidate.send();
+}
+
+void StubRendererFrontend::render(View& view) {
+ if (!updateParameters || !renderer) return;
+ renderer->render(view, *updateParameters);
+}
+
+Renderer* StubRendererFrontend::getRenderer() {
+ return renderer.get();
+}
+
+} // namespace mbgl
+