diff options
Diffstat (limited to 'test/src/mbgl/test/stub_renderer_frontend.cpp')
-rw-r--r-- | test/src/mbgl/test/stub_renderer_frontend.cpp | 52 |
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 + |