SIGN IN SIGN UP

Skip symbol re-placement when its inputs have not changed (#8208)

* Skip symbol re-placement when its inputs have not changed

A repaint triggered by anything else (an animated style image, a custom
layer) previously held the render loop open for fadeDuration while the
placement recency machinery re-ran and confirmed nothing moved. Track the
placement inputs (camera, collision settings, symbol buckets) and skip the
stale/re-place cycle when none of them changed, so such a repaint costs a
single frame and the map fires idle in between.

* Add changelog entry

* Add a test covering the placement input guard

* Document how an animated style image schedules its frames

* Track every placement input with a hash and a revision counter

* Re-place symbols when new DEM tiles arrive

* Re-place symbols when the terrain source is swapped

* Simplify the placement guard and trim its comments and tests

* Update src/style/style.ts

* Assert on placement runs instead of internal placement state

Split the table-driven cases into named tests, drop the one-line update
helper, and give settle a tsdoc comment.

* Extract the placement inputs into a documented method

* Rename the placement input snapshot to a placement signature

* Add Style#triggerSymbolPlacement for inputs the guard cannot see

* Call the placement comparison value a key

* Name the counter after the method that bumps it

* Mark the placement key builder internal

* Move the placement guard comments to tsdoc and split the terrain test

* Combine the terrain data event placement tests into one

* Extract the settled-placement check into a named variable

* Drive the placement guard tests through the public Map API

* Compare placement inputs via the last placement's own snapshot

* Update index.md

* Cover the non-matrix placement inputs with re-place tests

* Prove symbol fading survives the placement guard end to end

* Self code review

* Add a symbol fade test

* Update expected bundle sizes for the placement guard

* Shorten the placement guard comments

* Restore the original placement stale comment, note the new guard
L
Lucas Wojciechowski committed
2311d08211f6931e9a5bde4ae8d4550af47697f4
Parent: 0d49d14
Committed by GitHub <noreply@github.com> on 8/25/2026, 8:12:43 PM