diff options
Diffstat (limited to 'platform/glfw/glfw_renderer_frontend.cpp')
-rw-r--r-- | platform/glfw/glfw_renderer_frontend.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/platform/glfw/glfw_renderer_frontend.cpp b/platform/glfw/glfw_renderer_frontend.cpp new file mode 100644 index 0000000000..73205f1c56 --- /dev/null +++ b/platform/glfw/glfw_renderer_frontend.cpp @@ -0,0 +1,41 @@ +#include "glfw_renderer_frontend.hpp" + +#include <mbgl/renderer/renderer.hpp> + +GLFWRendererFrontend::GLFWRendererFrontend(std::unique_ptr<mbgl::Renderer> renderer_, GLFWView& glfwView_) + : glfwView(glfwView_) + , renderer(std::move(renderer_)) { + glfwView.setRenderFrontend(this); +} + +GLFWRendererFrontend::~GLFWRendererFrontend() = default; + +void GLFWRendererFrontend::reset() { + assert(renderer); + renderer.reset(); +} + +void GLFWRendererFrontend::setObserver(mbgl::RendererObserver& observer) { + assert(renderer); + renderer->setObserver(&observer); +} + +void GLFWRendererFrontend::update(std::shared_ptr<mbgl::UpdateParameters> params) { + updateParameters = std::move(params); + glfwView.invalidate(); +} + +void GLFWRendererFrontend::render() { + assert(renderer); + + if (!updateParameters) return; + + mbgl::BackendScope guard { glfwView, mbgl::BackendScope::ScopeType::Implicit }; + + renderer->render(*updateParameters); +} + +mbgl::Renderer* GLFWRendererFrontend::getRenderer() { + assert(renderer); + return renderer.get(); +} |