From 9c02e4d7dd536253f9ce3194fa9930a842fa4888 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Sat, 12 Aug 2017 14:22:01 -0700 Subject: [PATCH] [core] Inline Renderer::Impl::doRender --- src/mbgl/map/map.cpp | 6 +-- src/mbgl/renderer/renderer_impl.cpp | 64 +++++++++++------------------ src/mbgl/renderer/renderer_impl.hpp | 2 - 3 files changed, 28 insertions(+), 44 deletions(-) diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp index b7978f0e9..324bcc8b5 100644 --- a/src/mbgl/map/map.cpp +++ b/src/mbgl/map/map.cpp @@ -196,6 +196,9 @@ void Map::Impl::onDidFinishRenderingFrame(RenderMode renderMode, bool needsRepai if (needsRepaint || transform.inTransition()) { onUpdate(Update::Repaint); } + } else if (stillImageRequest && rendererFullyLoaded) { + auto request = std::move(stillImageRequest); + request->callback(nullptr); } } @@ -206,9 +209,6 @@ void Map::Impl::onDidFinishRenderingMap() { loading = false; observer.onDidFinishLoadingMap(); } - } else if (stillImageRequest) { - auto request = std::move(stillImageRequest); - request->callback(nullptr); } }; diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp index 0e1e62177..fc1cfca51 100644 --- a/src/mbgl/renderer/renderer_impl.cpp +++ b/src/mbgl/renderer/renderer_impl.cpp @@ -243,47 +243,18 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) { }; bool loaded = updateParameters.styleLoaded && isLoaded(); - - if (updateParameters.mode == MapMode::Continuous) { - if (renderState == RenderState::Never) { - observer->onWillStartRenderingMap(); - } - - observer->onWillStartRenderingFrame(); - - backend.updateAssumedState(); - - doRender(parameters); - parameters.context.performCleanup(); - - observer->onDidFinishRenderingFrame( - loaded ? RendererObserver::RenderMode::Full : RendererObserver::RenderMode::Partial, - hasTransitions() || frameHistory.needsAnimation(util::DEFAULT_TRANSITION_DURATION) - ); - - if (!loaded) { - renderState = RenderState::Partial; - } else if (renderState != RenderState::Fully) { - renderState = RenderState::Fully; - observer->onDidFinishRenderingMap(); - } - } else if (loaded) { - observer->onWillStartRenderingMap(); - observer->onWillStartRenderingFrame(); - - backend.updateAssumedState(); - - doRender(parameters); - - observer->onDidFinishRenderingFrame(RendererObserver::RenderMode::Full, false); - observer->onDidFinishRenderingMap(); - - // Cleanup only after signaling completion - parameters.context.performCleanup(); + if (updateParameters.mode == MapMode::Still && !loaded) { + return; } -} -void Renderer::Impl::doRender(PaintParameters& parameters) { + if (renderState == RenderState::Never) { + observer->onWillStartRenderingMap(); + } + + observer->onWillStartRenderingFrame(); + + backend.updateAssumedState(); + if (parameters.contextMode == GLContextMode::Shared) { parameters.context.setDirtyState(); } @@ -606,6 +577,21 @@ void Renderer::Impl::doRender(PaintParameters& parameters) { parameters.context.bindVertexArray = 0; } + + observer->onDidFinishRenderingFrame( + loaded ? RendererObserver::RenderMode::Full : RendererObserver::RenderMode::Partial, + updateParameters.mode == MapMode::Continuous && (hasTransitions() || frameHistory.needsAnimation(util::DEFAULT_TRANSITION_DURATION)) + ); + + if (!loaded) { + renderState = RenderState::Partial; + } else if (renderState != RenderState::Fully) { + renderState = RenderState::Fully; + observer->onDidFinishRenderingMap(); + } + + // Cleanup only after signaling completion + parameters.context.performCleanup(); } std::vector Renderer::Impl::queryRenderedFeatures(const ScreenLineString& geometry, const RenderedQueryOptions& options) const { diff --git a/src/mbgl/renderer/renderer_impl.hpp b/src/mbgl/renderer/renderer_impl.hpp index c326ebcac..717834f6e 100644 --- a/src/mbgl/renderer/renderer_impl.hpp +++ b/src/mbgl/renderer/renderer_impl.hpp @@ -57,8 +57,6 @@ public: void dumDebugLogs(); private: - void doRender(PaintParameters&); - bool isLoaded() const; bool hasTransitions() const;