diff --git a/src/mbgl/renderer/render_style.cpp b/src/mbgl/renderer/render_style.cpp index dc49a2064..0998722f7 100644 --- a/src/mbgl/renderer/render_style.cpp +++ b/src/mbgl/renderer/render_style.cpp @@ -134,7 +134,7 @@ void RenderStyle::update(const UpdateParameters& parameters) { // Update changed images. for (const auto& entry : imageDiff.changed) { - spriteAtlas->updateImage(entry.second[1]); + spriteAtlas->updateImage(entry.second.after); } if (parameters.spriteLoaded && !spriteAtlas->isLoaded()) { @@ -157,7 +157,7 @@ void RenderStyle::update(const UpdateParameters& parameters) { // Update render layers for changed layers. for (const auto& entry : layerDiff.changed) { - renderLayers.at(entry.first)->setImpl(entry.second[1]); + renderLayers.at(entry.first)->setImpl(entry.second.after); } // Update layers for class and zoom changes. diff --git a/src/mbgl/renderer/style_diff.cpp b/src/mbgl/renderer/style_diff.cpp index cd547f2a0..001728031 100644 --- a/src/mbgl/renderer/style_diff.cpp +++ b/src/mbgl/renderer/style_diff.cpp @@ -33,7 +33,7 @@ StyleDifference diff(const Immutable>& a, bIt++; } else { if (aIt->get() != bIt->get()) { - result.changed.emplace((*bIt)->id, std::array {{ *aIt, *bIt }}); + result.changed.emplace((*bIt)->id, StyleChange { *aIt, *bIt }); } aIt++; bIt++; @@ -73,7 +73,7 @@ bool hasLayoutDifference(const LayerDifference& layerDiff, const std::string& la const auto it = layerDiff.changed.find(layerID); if (it == layerDiff.changed.end()) return false; - return it->second[0]->hasLayoutDifference(*it->second[1]); + return it->second.before->hasLayoutDifference(*it->second.after); } } // namespace mbgl diff --git a/src/mbgl/renderer/style_diff.hpp b/src/mbgl/renderer/style_diff.hpp index ef788c380..a5b42fc66 100644 --- a/src/mbgl/renderer/style_diff.hpp +++ b/src/mbgl/renderer/style_diff.hpp @@ -10,12 +10,19 @@ namespace mbgl { +template +class StyleChange { +public: + T before; + T after; +}; + template class StyleDifference { public: std::unordered_map added; std::unordered_map removed; - std::unordered_map> changed; + std::unordered_map> changed; }; using ImmutableImage = Immutable;