From 8a6a332264c86f163afef4784012ab8b67e70e55 Mon Sep 17 00:00:00 2001 From: Mikhail Pozdnyakov Date: Thu, 25 Jul 2019 16:09:09 +0300 Subject: [core] Fix assertion at RenderRasterLayer::prepare() It shall consider that image data might not be available until the source loads it. --- src/mbgl/renderer/layers/render_raster_layer.cpp | 6 ++++-- src/mbgl/renderer/render_layer.cpp | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/mbgl/renderer/layers/render_raster_layer.cpp b/src/mbgl/renderer/layers/render_raster_layer.cpp index ecaee2985c..82d135b9ef 100644 --- a/src/mbgl/renderer/layers/render_raster_layer.cpp +++ b/src/mbgl/renderer/layers/render_raster_layer.cpp @@ -77,12 +77,14 @@ static std::array spinWeights(float spin) { void RenderRasterLayer::prepare(const LayerPrepareParameters& params) { renderTiles = params.source->getRenderTiles(); imageData = params.source->getImageRenderData(); - assert(renderTiles || imageData); + // It is possible image data is not available until the source loads it. + assert(renderTiles || imageData || !params.source->isEnabled()); } void RenderRasterLayer::render(PaintParameters& parameters) { - if (parameters.pass != RenderPass::Translucent) + if (parameters.pass != RenderPass::Translucent || (!renderTiles && !imageData)) { return; + } const auto& evaluated = static_cast(*evaluatedProperties).evaluated; RasterProgram::Binders paintAttributeData{ evaluated, 0 }; diff --git a/src/mbgl/renderer/render_layer.cpp b/src/mbgl/renderer/render_layer.cpp index f15dc7e6f4..c1ca1fd017 100644 --- a/src/mbgl/renderer/render_layer.cpp +++ b/src/mbgl/renderer/render_layer.cpp @@ -47,6 +47,7 @@ bool RenderLayer::supportsZoom(float zoom) const { void RenderLayer::prepare(const LayerPrepareParameters& params) { assert(params.source); + assert(params.source->isEnabled()); renderTiles = params.source->getRenderTiles(); addRenderPassesFromTiles(); } -- cgit v1.2.1