From 006ee8b0034eab7096c53a7ca4eddf7226880161 Mon Sep 17 00:00:00 2001 From: Alexander Shalamov Date: Tue, 23 Oct 2018 21:59:05 +0300 Subject: [core] Move markContextDestroyed() to the RenderLayer --- src/mbgl/renderer/layers/render_custom_layer.cpp | 4 ++++ src/mbgl/renderer/layers/render_custom_layer.hpp | 5 +---- src/mbgl/renderer/render_layer.cpp | 4 ++++ src/mbgl/renderer/render_layer.hpp | 2 +- src/mbgl/renderer/renderer_impl.cpp | 10 +++++----- 5 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/mbgl/renderer/layers/render_custom_layer.cpp b/src/mbgl/renderer/layers/render_custom_layer.cpp index 2bad375bb7..e80ceda6c7 100644 --- a/src/mbgl/renderer/layers/render_custom_layer.cpp +++ b/src/mbgl/renderer/layers/render_custom_layer.cpp @@ -42,6 +42,10 @@ bool RenderCustomLayer::hasCrossfade() const { return false; } +void RenderCustomLayer::markContextDestroyed() { + contextDestroyed = true; +} + std::unique_ptr RenderCustomLayer::createBucket(const BucketParameters&, const std::vector&) const { assert(false); return nullptr; diff --git a/src/mbgl/renderer/layers/render_custom_layer.hpp b/src/mbgl/renderer/layers/render_custom_layer.hpp index 47d5bb3f40..958f8bfd3f 100644 --- a/src/mbgl/renderer/layers/render_custom_layer.hpp +++ b/src/mbgl/renderer/layers/render_custom_layer.hpp @@ -14,16 +14,13 @@ public: void evaluate(const PropertyEvaluationParameters&) override; bool hasTransition() const override; bool hasCrossfade() const override; + void markContextDestroyed() final; std::unique_ptr createBucket(const BucketParameters&, const std::vector&) const final; void render(PaintParameters&, RenderSource*) final; const style::CustomLayer::Impl& impl() const; - void markContextDestroyed() { - contextDestroyed = true; - }; - private: bool contextDestroyed = false; std::shared_ptr host; diff --git a/src/mbgl/renderer/render_layer.cpp b/src/mbgl/renderer/render_layer.cpp index 4cd033da75..44c141c741 100644 --- a/src/mbgl/renderer/render_layer.cpp +++ b/src/mbgl/renderer/render_layer.cpp @@ -75,6 +75,10 @@ void RenderLayer::setRenderTiles(std::vector> renderTiles = std::move(tiles); } +void RenderLayer::markContextDestroyed() { + // no-op +} + void RenderLayer::checkRenderability(const PaintParameters& parameters, const uint32_t activeBindingCount) { // Only warn once for every layer. diff --git a/src/mbgl/renderer/render_layer.hpp b/src/mbgl/renderer/render_layer.hpp index 39e4a23a84..8d17e318f2 100644 --- a/src/mbgl/renderer/render_layer.hpp +++ b/src/mbgl/renderer/render_layer.hpp @@ -91,8 +91,8 @@ public: Immutable baseImpl; void setImpl(Immutable); + virtual void markContextDestroyed(); friend std::string layoutKey(const RenderLayer&); - protected: // Checks whether the current hardware can render this layer. If it can't, we'll show a warning // in the console to inform the developer. diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp index 129925bd9a..d6572712cd 100644 --- a/src/mbgl/renderer/renderer_impl.cpp +++ b/src/mbgl/renderer/renderer_impl.cpp @@ -69,13 +69,13 @@ Renderer::Impl::~Impl() { assert(BackendScope::exists()); if (contextLost) { - // Signal all RenderCustomLayers that the context was lost - // before cleaning up + // Signal all RenderLayers that the context was lost + // before cleaning up. At the moment, only CustomLayer is + // interested whether rendering context is lost. However, it would be + // beneficial for dynamically loaded or other custom built-in plugins. for (const auto& entry : renderLayers) { RenderLayer& layer = *entry.second; - if (layer.is()) { - layer.as()->markContextDestroyed(); - } + layer.markContextDestroyed(); } } }; -- cgit v1.2.1