summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-07-25 16:09:09 +0300
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-07-25 16:09:09 +0300
commit677a02a1dd1aff2317c9563371514b10e312b1f0 (patch)
treeeead036aa5fcb362b5472101e96d2fdf78333d69
parent2e5897c0f49120c72b7431b3af7d41bef3414719 (diff)
downloadqtlocation-mapboxgl-677a02a1dd1aff2317c9563371514b10e312b1f0.tar.gz
[core] Fix assertion at RenderRasterLayer::prepare()
It shall consider that image data might not be available until the source loads it.
-rw-r--r--src/mbgl/renderer/layers/render_raster_layer.cpp6
-rw-r--r--src/mbgl/renderer/render_layer.cpp1
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<float, 3> 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<const RasterLayerProperties&>(*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();
}