diff options
Diffstat (limited to 'platform')
-rw-r--r-- | platform/default/src/mbgl/gfx/headless_frontend.cpp | 2 | ||||
-rw-r--r-- | platform/glfw/glfw_backend.hpp | 2 | ||||
-rw-r--r-- | platform/glfw/glfw_gl_backend.hpp | 4 | ||||
-rw-r--r-- | platform/glfw/glfw_renderer_frontend.cpp | 3 | ||||
-rw-r--r-- | platform/glfw/glfw_view.cpp | 18 | ||||
-rw-r--r-- | platform/glfw/glfw_view.hpp | 2 | ||||
-rw-r--r-- | platform/glfw/main.cpp | 2 |
7 files changed, 19 insertions, 14 deletions
diff --git a/platform/default/src/mbgl/gfx/headless_frontend.cpp b/platform/default/src/mbgl/gfx/headless_frontend.cpp index 996006bfe2..a580647913 100644 --- a/platform/default/src/mbgl/gfx/headless_frontend.cpp +++ b/platform/default/src/mbgl/gfx/headless_frontend.cpp @@ -45,7 +45,7 @@ HeadlessFrontend::HeadlessFrontend(Size size_, frameTime = (endTime - startTime).count(); } }), - renderer(std::make_unique<Renderer>(*getBackend(), pixelRatio, localFontFamily)) {} + renderer(std::make_unique<Renderer>(getBackend(), pixelRatio, localFontFamily)) {} HeadlessFrontend::~HeadlessFrontend() = default; diff --git a/platform/glfw/glfw_backend.hpp b/platform/glfw/glfw_backend.hpp index 867e60d79e..df803b2fd4 100644 --- a/platform/glfw/glfw_backend.hpp +++ b/platform/glfw/glfw_backend.hpp @@ -22,7 +22,7 @@ public: return mbgl::gfx::Backend::Create<GLFWBackend, GLFWwindow*, bool>(window, capFrameRate); } - virtual mbgl::gfx::RendererBackend& getRendererBackend() = 0; + virtual mbgl::gfx::RendererBackend* getRendererBackend() = 0; virtual mbgl::Size getSize() const = 0; virtual void setSize(mbgl::Size) = 0; }; diff --git a/platform/glfw/glfw_gl_backend.hpp b/platform/glfw/glfw_gl_backend.hpp index 5971bbd0c5..b7a8221d94 100644 --- a/platform/glfw/glfw_gl_backend.hpp +++ b/platform/glfw/glfw_gl_backend.hpp @@ -18,8 +18,8 @@ public: // GLFWRendererBackend implementation public: - mbgl::gfx::RendererBackend& getRendererBackend() override { - return *this; + mbgl::gfx::RendererBackend* getRendererBackend() override { + return this; } mbgl::Size getSize() const override; void setSize(mbgl::Size) override; diff --git a/platform/glfw/glfw_renderer_frontend.cpp b/platform/glfw/glfw_renderer_frontend.cpp index 46f1309901..41d365e52c 100644 --- a/platform/glfw/glfw_renderer_frontend.cpp +++ b/platform/glfw/glfw_renderer_frontend.cpp @@ -28,10 +28,11 @@ void GLFWRendererFrontend::update(std::shared_ptr<mbgl::UpdateParameters> params void GLFWRendererFrontend::render() { assert(renderer); + assert(glfwView.getRendererBackend()); if (!updateParameters) return; - mbgl::gfx::BackendScope guard { glfwView.getRendererBackend(), mbgl::gfx::BackendScope::ScopeType::Implicit }; + mbgl::gfx::BackendScope guard { *glfwView.getRendererBackend(), mbgl::gfx::BackendScope::ScopeType::Implicit }; // onStyleImageMissing might be called during a render. The user implemented method // could trigger a call to MGLRenderFrontend#update which overwrites `updateParameters`. diff --git a/platform/glfw/glfw_view.cpp b/platform/glfw/glfw_view.cpp index 3d10f2c654..1992268d75 100644 --- a/platform/glfw/glfw_view.cpp +++ b/platform/glfw/glfw_view.cpp @@ -168,7 +168,7 @@ void GLFWView::setRenderFrontend(GLFWRendererFrontend* rendererFrontend_) { rendererFrontend = rendererFrontend_; } -mbgl::gfx::RendererBackend& GLFWView::getRendererBackend() { +mbgl::gfx::RendererBackend* GLFWView::getRendererBackend() { return backend->getRendererBackend(); } @@ -180,6 +180,9 @@ void GLFWView::onKey(GLFWwindow *window, int key, int /*scancode*/, int action, view->animateRouteCallback = nullptr; switch (key) { + case GLFW_KEY_V: + view->rendererFrontend->getRenderer()->setRendererBackend(view->getRendererBackend()); + break; case GLFW_KEY_ESCAPE: glfwSetWindowShouldClose(window, true); break; @@ -709,13 +712,14 @@ void GLFWView::run() { updateAnimatedAnnotations(); - mbgl::gfx::BackendScope scope { backend->getRendererBackend() }; - - rendererFrontend->render(); + if (backend->getRendererBackend()) { + mbgl::gfx::BackendScope scope { *backend->getRendererBackend() }; + rendererFrontend->render(); - report(1000 * (glfwGetTime() - started)); - if (benchmark) { - invalidate(); + report(1000 * (glfwGetTime() - started)); + if (benchmark) { + invalidate(); + } } } diff --git a/platform/glfw/glfw_view.hpp b/platform/glfw/glfw_view.hpp index e9867f14da..fe1d94de91 100644 --- a/platform/glfw/glfw_view.hpp +++ b/platform/glfw/glfw_view.hpp @@ -27,7 +27,7 @@ public: void setRenderFrontend(GLFWRendererFrontend*); - mbgl::gfx::RendererBackend& getRendererBackend(); + mbgl::gfx::RendererBackend* getRendererBackend(); void setTestDirectory(std::string dir) { testDirectory = std::move(dir); }; diff --git a/platform/glfw/main.cpp b/platform/glfw/main.cpp index ded8ee3e1f..140e534955 100644 --- a/platform/glfw/main.cpp +++ b/platform/glfw/main.cpp @@ -119,7 +119,7 @@ int main(int argc, char *argv[]) { } } - GLFWRendererFrontend rendererFrontend { std::make_unique<mbgl::Renderer>(view->getRendererBackend(), view->getPixelRatio()), *view }; + GLFWRendererFrontend rendererFrontend { std::make_unique<mbgl::Renderer>(view->getPixelRatio()) , *view }; mbgl::Map map(rendererFrontend, *view, mbgl::MapOptions().withSize(view->getSize()).withPixelRatio(view->getPixelRatio()), resourceOptions); |