diff options
author | Chris Loer <chris.loer@gmail.com> | 2018-12-10 14:01:25 -0800 |
---|---|---|
committer | Tobrun <tobrun@mapbox.com> | 2018-12-12 12:51:58 +0100 |
commit | 05c47a5fb6a4a30f95634306f683673bd311d83b (patch) | |
tree | d33b0c0fbf80386f2bd3ebe1f0aa9c0e9a4bdacd | |
parent | ba3309f52c51b268c69d13c485b908063089a77b (diff) | |
download | qtlocation-mapboxgl-05c47a5fb6a4a30f95634306f683673bd311d83b.tar.gz |
[core] Avoid divide-by-zero when transition duration is 0..
Fixes issue #13506 -- transition duration of 0 would cause symbol flickering.
-rw-r--r-- | src/mbgl/text/placement.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/mbgl/text/placement.cpp b/src/mbgl/text/placement.cpp index 3b2cf20b7e..a39106a43d 100644 --- a/src/mbgl/text/placement.cpp +++ b/src/mbgl/text/placement.cpp @@ -245,7 +245,9 @@ void Placement::commit(const Placement& prevPlacement, TimePoint now) { bool placementChanged = false; - float increment = mapMode == MapMode::Continuous && transitionOptions.enablePlacementTransitions ? + float increment = mapMode == MapMode::Continuous && + transitionOptions.enablePlacementTransitions && + transitionOptions.duration.value_or(util::DEFAULT_TRANSITION_DURATION) > Milliseconds(0) ? std::chrono::duration<float>(commitTime - prevPlacement.commitTime) / transitionOptions.duration.value_or(util::DEFAULT_TRANSITION_DURATION) : 1.0; @@ -405,7 +407,8 @@ void Placement::updateBucketOpacities(SymbolBucket& bucket, std::set<uint32_t>& } float Placement::symbolFadeChange(TimePoint now) const { - if (mapMode == MapMode::Continuous && transitionOptions.enablePlacementTransitions) { + if (mapMode == MapMode::Continuous && transitionOptions.enablePlacementTransitions && + transitionOptions.duration.value_or(util::DEFAULT_TRANSITION_DURATION) > Milliseconds(0)) { return std::chrono::duration<float>(now - commitTime) / transitionOptions.duration.value_or(util::DEFAULT_TRANSITION_DURATION); } else { return 1.0; |