diff options
Diffstat (limited to 'src/mbgl/text/placement.cpp')
-rw-r--r-- | src/mbgl/text/placement.cpp | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/src/mbgl/text/placement.cpp b/src/mbgl/text/placement.cpp index 9883a1f456..33844e6427 100644 --- a/src/mbgl/text/placement.cpp +++ b/src/mbgl/text/placement.cpp @@ -38,7 +38,6 @@ Placement::Placement(const TransformState& state_, MapMode mapMode_) : collisionIndex(state_) , state(state_) , mapMode(mapMode_) - , recentUntil(TimePoint::min()) {} void Placement::placeLayer(RenderSymbolLayer& symbolLayer, const mat4& projMatrix, bool showCollisionBoxes) { @@ -188,7 +187,7 @@ void Placement::placeLayerBucket( bucket.justReloaded = false; } -bool Placement::commit(const Placement& prevPlacement, TimePoint now) { +void Placement::commit(const Placement& prevPlacement, TimePoint now) { commitTime = now; bool placementChanged = false; @@ -222,7 +221,7 @@ bool Placement::commit(const Placement& prevPlacement, TimePoint now) { } } - return placementChanged; + fadeStartTime = placementChanged ? commitTime : prevPlacement.fadeStartTime; } void Placement::updateLayerOpacities(RenderSymbolLayer& symbolLayer) { @@ -339,18 +338,15 @@ float Placement::symbolFadeChange(TimePoint now) const { } bool Placement::hasTransitions(TimePoint now) const { - return symbolFadeChange(now) < 1.0 || stale; + if (mapMode == MapMode::Continuous) { + return stale || std::chrono::duration<float>(now - fadeStartTime) < Duration(std::chrono::milliseconds(300)); + } else { + return false; + } } bool Placement::stillRecent(TimePoint now) const { - return mapMode == MapMode::Continuous && recentUntil > now; -} -void Placement::setRecent(TimePoint now) { - stale = false; - if (mapMode == MapMode::Continuous) { - // Only set in continuous mode because "now" isn't defined in still mode - recentUntil = now + Duration(std::chrono::milliseconds(300)); - } + return mapMode == MapMode::Continuous && commitTime + Duration(std::chrono::milliseconds(300)) > now; } void Placement::setStale() { |