summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-04-04 12:21:00 +0300
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-04-04 13:54:47 +0300
commit8c0994d1e63d5c6bfab329e74b63fde9207b7875 (patch)
tree4bee6acfa26a6c3863464a8502ff543d4ec4b8a0
parent592a8a610fffc2073cb7991f1cf3a1b1d004c061 (diff)
downloadqtlocation-mapboxgl-upstream/mikhail_refactor_renderer_impl.tar.gz
[core] Minor performance tweaks in renderer implupstream/mikhail_refactor_renderer_impl
-rw-r--r--src/mbgl/renderer/renderer_impl.cpp8
-rw-r--r--src/mbgl/tile/geometry_tile.cpp7
2 files changed, 7 insertions, 8 deletions
diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp
index 0fa418ebbe..9446cbc194 100644
--- a/src/mbgl/renderer/renderer_impl.cpp
+++ b/src/mbgl/renderer/renderer_impl.cpp
@@ -165,7 +165,6 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
imageManager->notifyIfMissingImageAdded();
imageManager->setLoaded(updateParameters.spriteLoaded);
-
const LayerDifference layerDiff = diffLayers(layerImpls, updateParameters.layers);
layerImpls = updateParameters.layers;
@@ -191,15 +190,14 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
// Update layers for class and zoom changes.
for (const auto& entry : renderLayers) {
RenderLayer& layer = *entry.second;
- const bool layerAdded = layerDiff.added.count(entry.first);
- const bool layerChanged = layerDiff.changed.count(entry.first);
+ const bool layerAddedOrChanged = layerDiff.added.count(entry.first) || layerDiff.changed.count(entry.first);
- if (layerAdded || layerChanged) {
+ if (layerAddedOrChanged) {
layer.transition(transitionParameters);
layer.update();
}
- if (layerAdded || layerChanged || zoomChanged || layer.hasTransition() || layer.hasCrossfade()) {
+ if (layerAddedOrChanged || zoomChanged || layer.hasTransition() || layer.hasCrossfade()) {
layer.evaluate(evaluationParameters);
}
}
diff --git a/src/mbgl/tile/geometry_tile.cpp b/src/mbgl/tile/geometry_tile.cpp
index 9165c03267..a3ae4217c9 100644
--- a/src/mbgl/tile/geometry_tile.cpp
+++ b/src/mbgl/tile/geometry_tile.cpp
@@ -93,12 +93,13 @@ void GeometryTile::setLayers(const std::vector<Immutable<Layer::Impl>>& layers)
pending = true;
std::vector<Immutable<Layer::Impl>> impls;
+ impls.reserve(layers.size());
for (const auto& layer : layers) {
// Skip irrelevant layers.
- if (layer->getTypeInfo()->source == LayerTypeInfo::Source::NotRequired ||
- layer->source != sourceID ||
- id.overscaledZ < std::floor(layer->minZoom) ||
+ assert(layer->getTypeInfo()->source != LayerTypeInfo::Source::NotRequired);
+ assert(layer->source == sourceID);
+ if (id.overscaledZ < std::floor(layer->minZoom) ||
id.overscaledZ >= std::ceil(layer->maxZoom) ||
layer->visibility == VisibilityType::None) {
continue;