summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/render_layer.cpp
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-05-13 11:25:29 +0300
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-05-14 11:19:56 +0300
commit81823e35a68eb87d9433457fe9983d06793a77bf (patch)
tree8fd4fa93dd552d837b9014fda5a56bd1a0162ef8 /src/mbgl/renderer/render_layer.cpp
parentcd24f4c45f6b38e7f3dc73cf0afda9b86b3d85d4 (diff)
downloadqtlocation-mapboxgl-81823e35a68eb87d9433457fe9983d06793a77bf.tar.gz
[core] RenderTile shall never be created for a not renderable tile
A RenderTile is already never created for a not renderable tile, guarantied by the checks in `updateRenderables()`. However, the client code had plenty of `isRenderable()` checks in the render path, which complicated the code and affected rendering performance. This patch removes the unneeded checks from the client code and puts an assertion to `TilePyramid::addRenderTile()`.
Diffstat (limited to 'src/mbgl/renderer/render_layer.cpp')
-rw-r--r--src/mbgl/renderer/render_layer.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/mbgl/renderer/render_layer.cpp b/src/mbgl/renderer/render_layer.cpp
index 757ee4f241..373a693ffd 100644
--- a/src/mbgl/renderer/render_layer.cpp
+++ b/src/mbgl/renderer/render_layer.cpp
@@ -40,8 +40,7 @@ bool RenderLayer::supportsZoom(float zoom) const {
}
void RenderLayer::setRenderTiles(RenderTiles tiles, const TransformState&) {
- auto filterFn = [](auto& tile){ return !tile.tile.isRenderable() || tile.tile.holdForFade(); };
- renderTiles = filterRenderTiles(std::move(tiles), filterFn);
+ renderTiles = filterRenderTiles(std::move(tiles));
}
const RenderLayerSymbolInterface* RenderLayer::getSymbolInterface() const {
@@ -52,16 +51,16 @@ optional<Color> RenderLayer::getSolidBackground() const {
return nullopt;
}
-RenderLayer::RenderTiles RenderLayer::filterRenderTiles(RenderTiles tiles, FilterFunctionPtr filterFn) const {
- assert(filterFn != nullptr);
+RenderLayer::RenderTiles RenderLayer::filterRenderTiles(RenderTiles tiles) const {
RenderTiles filtered;
for (auto& tileRef : tiles) {
- auto& tile = tileRef.get();
- if (filterFn(tile)) {
+ auto& tile = tileRef.get().tile;
+ assert(tile.isRenderable());
+ if (tile.holdForFade()) {
continue;
}
- filtered.emplace_back(tile);
+ filtered.emplace_back(tileRef);
}
return filtered;
}