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.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/mbgl/text/placement.cpp b/src/mbgl/text/placement.cpp
index 639ed7e1de..2566ba4274 100644
--- a/src/mbgl/text/placement.cpp
+++ b/src/mbgl/text/placement.cpp
@@ -101,6 +101,7 @@ Placement::Placement(const TransformState& state_,
placementZoom(state_.getZoom()),
collisionGroups(crossSourceCollisions),
prevPlacement(std::move(prevPlacement_)) {
+ assert(prevPlacement || mapMode != MapMode::Continuous);
if (prevPlacement) {
prevPlacement->get()->prevPlacement = nullopt; // Only hold on to one placement back
}
@@ -533,13 +534,22 @@ void Placement::placeBucket(
}
void Placement::commit(TimePoint now, const double zoom) {
- assert(getPrevPlacement());
commitTime = now;
+ if (!getPrevPlacement()) {
+ assert(mapMode != MapMode::Continuous);
+ fadeStartTime = commitTime;
+ for (auto& jointPlacement : placements) {
+ opacities.emplace(
+ jointPlacement.first,
+ JointOpacityState(
+ jointPlacement.second.text, jointPlacement.second.icon, jointPlacement.second.skipFade));
+ }
+ return;
+ }
bool placementChanged = false;
prevZoomAdjustment = getPrevPlacement()->zoomAdjustment(zoom);
-
float increment = getPrevPlacement()->symbolFadeChange(commitTime);
// add the opacities from the current placement, and copy their current values from the previous placement