summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/renderer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer/renderer.cpp')
-rw-r--r--src/mbgl/renderer/renderer.cpp23
1 files changed, 18 insertions, 5 deletions
diff --git a/src/mbgl/renderer/renderer.cpp b/src/mbgl/renderer/renderer.cpp
index 5afbbbd47e..ec694356de 100644
--- a/src/mbgl/renderer/renderer.cpp
+++ b/src/mbgl/renderer/renderer.cpp
@@ -8,14 +8,25 @@
namespace mbgl {
-Renderer::Renderer(gfx::RendererBackend& backend, float pixelRatio_, const optional<std::string> localFontFamily_)
+Renderer::Renderer(gfx::RendererBackend* backend, float pixelRatio_, const optional<std::string> localFontFamily_)
: impl(std::make_unique<Impl>(backend, pixelRatio_, localFontFamily_)) {}
+
+Renderer::Renderer(float pixelRatio, bool sharedContext)
+ : impl(std::make_unique<Impl>(pixelRatio, sharedContext)) {
+}
+
Renderer::~Renderer() {
- gfx::BackendScope guard { impl->backend };
+ gfx::BackendScope guard { *impl->backend };
impl.reset();
}
+void Renderer::setRendererBackend(gfx::RendererBackend* backend) {
+ assert(backend);
+ impl->setRendererBackend(backend);
+ impl->observer->onInvalidate();
+}
+
void Renderer::markContextLost() {
impl->orchestrator.markContextLost();
}
@@ -29,7 +40,7 @@ void Renderer::render(const std::shared_ptr<UpdateParameters>& updateParameters)
assert(updateParameters);
if (auto renderTree = impl->orchestrator.createRenderTree(updateParameters)) {
renderTree->prepare();
- impl->render(*renderTree);
+ if (impl->backend) impl->render(*renderTree);
}
}
@@ -126,8 +137,10 @@ void Renderer::dumpDebugLogs() {
}
void Renderer::reduceMemoryUse() {
- gfx::BackendScope guard { impl->backend };
- impl->reduceMemoryUse();
+ if (impl->backend) {
+ gfx::BackendScope guard { *impl->backend };
+ impl->reduceMemoryUse();
+ }
impl->orchestrator.reduceMemoryUse();
}