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-26 11:23:13 +0300
commit8a6a332264c86f163afef4784012ab8b67e70e55 (patch)
tree83834ccb8c256fd9440a3b25ce42ed688afae36f
parent273ad436fb4d2a18c6749bd4e40fa56546e9285c (diff)
downloadqtlocation-mapboxgl-8a6a332264c86f163afef4784012ab8b67e70e55.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();
}