summaryrefslogtreecommitdiff
path: root/src/mbgl/text/placement.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/text/placement.cpp')
-rw-r--r--src/mbgl/text/placement.cpp20
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() {