summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/renderer_impl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer/renderer_impl.cpp')
-rw-r--r--src/mbgl/renderer/renderer_impl.cpp29
1 files changed, 20 insertions, 9 deletions
diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp
index 113840d059..46a5ea7a5d 100644
--- a/src/mbgl/renderer/renderer_impl.cpp
+++ b/src/mbgl/renderer/renderer_impl.cpp
@@ -24,16 +24,24 @@ static RendererObserver& nullObserver() {
return observer;
}
-Renderer::Impl::Impl(gfx::RendererBackend& backend_,
+Renderer::Impl::Impl(gfx::RendererBackend* backend_,
float pixelRatio_,
optional<std::string> localFontFamily_)
- : orchestrator(!backend_.contextIsShared(), std::move(localFontFamily_))
+ : orchestrator(!backend_->contextIsShared(), std::move(localFontFamily_))
, backend(backend_)
, observer(&nullObserver())
, pixelRatio(pixelRatio_) {
}
+Renderer::Impl::Impl(float pixelRatio_,
+ bool sharedContext)
+ : orchestrator(sharedContext, nullopt)
+ , backend(nullptr)
+ , observer(&nullObserver())
+ , pixelRatio(pixelRatio_) {
+}
+
Renderer::Impl::~Impl() {
assert(gfx::BackendScope::exists());
};
@@ -43,6 +51,7 @@ void Renderer::Impl::setObserver(RendererObserver* observer_) {
}
void Renderer::Impl::render(const RenderTree& renderTree) {
+ assert(backend);
if (renderState == RenderState::Never) {
observer->onWillStartRenderingMap();
}
@@ -51,19 +60,19 @@ void Renderer::Impl::render(const RenderTree& renderTree) {
const auto& renderTreeParameters = renderTree.getParameters();
if (!staticData) {
- staticData = std::make_unique<RenderStaticData>(backend.getContext(), pixelRatio);
+ staticData = std::make_unique<RenderStaticData>(backend->getContext(), pixelRatio);
}
staticData->has3D = renderTreeParameters.has3D;
- auto& context = backend.getContext();
+ auto& context = backend->getContext();
// Blocks execution until the renderable is available.
- backend.getDefaultRenderable().wait();
+ backend->getDefaultRenderable().wait();
PaintParameters parameters {
context,
pixelRatio,
- backend,
+ *backend,
renderTreeParameters.light,
renderTreeParameters.mapMode,
renderTreeParameters.debugOptions,
@@ -130,7 +139,7 @@ void Renderer::Impl::render(const RenderTree& renderTree) {
optional<Color> color;
if (parameters.debugOptions & MapDebugOptions::Overdraw) {
color = Color::black();
- } else if (!backend.contextIsShared()) {
+ } else if (!backend->contextIsShared()) {
color = renderTreeParameters.backgroundColor;
}
parameters.renderPass = parameters.encoder->createRenderPass("main buffer", { parameters.backend.getDefaultRenderable(), color, 1, 0 });
@@ -223,8 +232,10 @@ void Renderer::Impl::render(const RenderTree& renderTree) {
}
void Renderer::Impl::reduceMemoryUse() {
- assert(gfx::BackendScope::exists());
- backend.getContext().reduceMemoryUsage();
+ if (backend) {
+ assert(gfx::BackendScope::exists());
+ backend->getContext().reduceMemoryUsage();
+ }
}
} // namespace mbgl