From 5af128f205a404128e804f5c82ecf748a52dac9c Mon Sep 17 00:00:00 2001 From: Mikhail Pozdnyakov Date: Wed, 15 Jan 2020 15:27:09 +0200 Subject: [core] Pass placement commit parameters in constructor --- src/mbgl/renderer/render_orchestrator.cpp | 8 +++++--- src/mbgl/text/placement.cpp | 10 ++++++---- src/mbgl/text/placement.hpp | 5 +++-- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/mbgl/renderer/render_orchestrator.cpp b/src/mbgl/renderer/render_orchestrator.cpp index 2462ee6986..aa32acc04a 100644 --- a/src/mbgl/renderer/render_orchestrator.cpp +++ b/src/mbgl/renderer/render_orchestrator.cpp @@ -400,6 +400,7 @@ std::unique_ptr RenderOrchestrator::createRenderTree(const UpdatePar updateParameters.mode, updateParameters.transitionOptions, updateParameters.crossSourceCollisions, + updateParameters.timePoint, placementController.getPlacement()); for (auto it = layersNeedPlacement.crbegin(); it != layersNeedPlacement.crend(); ++it) { @@ -408,7 +409,7 @@ std::unique_ptr RenderOrchestrator::createRenderTree(const UpdatePar placement->placeLayer(layer, renderTreeParameters->transformParams.projMatrix, updateParameters.debugOptions & MapDebugOptions::Collision); } - placement->commit(updateParameters.timePoint, updateParameters.transformState.getZoom()); + placement->commit(); crossTileSymbolIndex.pruneUnusedLayers(usedSymbolLayers); for (const auto& entry : renderSources) { entry.second->updateFadingTiles(); @@ -427,7 +428,8 @@ std::unique_ptr RenderOrchestrator::createRenderTree(const UpdatePar Mutable placement = makeMutable(updateParameters.transformState, updateParameters.mode, updateParameters.transitionOptions, - updateParameters.crossSourceCollisions); + updateParameters.crossSourceCollisions, + updateParameters.timePoint); for (auto it = layersNeedPlacement.crbegin(); it != layersNeedPlacement.crend(); ++it) { const RenderLayer& layer = *it; crossTileSymbolIndex.addLayer(layer, updateParameters.transformState.getLatLng().longitude()); @@ -435,7 +437,7 @@ std::unique_ptr RenderOrchestrator::createRenderTree(const UpdatePar renderTreeParameters->transformParams.projMatrix, updateParameters.debugOptions & MapDebugOptions::Collision); } - placement->commit(updateParameters.timePoint, updateParameters.transformState.getZoom()); + placement->commit(); placementController.setPlacement(std::move(placement)); } renderTreeParameters->symbolFadeChange = 1.0f; diff --git a/src/mbgl/text/placement.cpp b/src/mbgl/text/placement.cpp index d6a78082fa..f3917a8fdb 100644 --- a/src/mbgl/text/placement.cpp +++ b/src/mbgl/text/placement.cpp @@ -61,7 +61,8 @@ const CollisionGroups::CollisionGroup& CollisionGroups::get(const std::string& s // PlacementController implemenation PlacementController::PlacementController() - : placement(makeMutable(TransformState{}, MapMode::Static, style::TransitionOptions{}, true, nullopt)) {} + : placement(makeMutable( + TransformState{}, MapMode::Static, style::TransitionOptions{}, true, TimePoint(), nullopt)) {} void PlacementController::setPlacement(Immutable placement_) { placement = std::move(placement_); @@ -94,10 +95,12 @@ Placement::Placement(const TransformState& state_, MapMode mapMode_, style::TransitionOptions transitionOptions_, const bool crossSourceCollisions, + TimePoint commitTime_, optional> prevPlacement_) : collisionIndex(state_, mapMode_), mapMode(mapMode_), transitionOptions(std::move(transitionOptions_)), + commitTime(commitTime_), placementZoom(state_.getZoom()), collisionGroups(crossSourceCollisions), prevPlacement(std::move(prevPlacement_)) { @@ -622,8 +625,7 @@ void Placement::placeBucket(const SymbolBucket& bucket, std::forward_as_tuple(bucket.bucketInstanceId, params.featureIndex, overscaledID)); } -void Placement::commit(TimePoint now, const double zoom) { - commitTime = now; +void Placement::commit() { if (!getPrevPlacement()) { assert(mapMode != MapMode::Continuous); fadeStartTime = commitTime; @@ -638,7 +640,7 @@ void Placement::commit(TimePoint now, const double zoom) { bool placementChanged = false; - prevZoomAdjustment = getPrevPlacement()->zoomAdjustment(zoom); + prevZoomAdjustment = getPrevPlacement()->zoomAdjustment(placementZoom); float increment = getPrevPlacement()->symbolFadeChange(commitTime); // add the opacities from the current placement, and copy their current values from the previous placement diff --git a/src/mbgl/text/placement.hpp b/src/mbgl/text/placement.hpp index 4dd9011da4..dd46970780 100644 --- a/src/mbgl/text/placement.hpp +++ b/src/mbgl/text/placement.hpp @@ -116,9 +116,10 @@ public: MapMode, style::TransitionOptions, const bool crossSourceCollisions, + TimePoint commitTime, optional> prevPlacement = nullopt); void placeLayer(const RenderLayer&, const mat4&, bool showCollisionBoxes); - void commit(TimePoint, const double zoom); + void commit(); void updateLayerBuckets(const RenderLayer&, const TransformState&, bool updateOpacities) const; float symbolFadeChange(TimePoint now) const; bool hasTransitions(TimePoint now) const; @@ -151,7 +152,7 @@ private: TimePoint fadeStartTime; TimePoint commitTime; - float placementZoom; + const float placementZoom; float prevZoomAdjustment = 0; std::unordered_map placements; -- cgit v1.2.1