VectorData

class VectorData(val validTime: Date, features: MutableList<Feature>, rawFeatures: List<MvtFeature>? = null) : TileData

rawFeatures non-null means this tile+interval was parsed in the raw fast path (rule: raw-vector-fast-path — originally circle-only, generalized to Fill/Line/Circle via VectorTileSource.setRawPathEligible) — it and features are never both populated. This is the single flag every reader branches on; there is no separate map tracking "raw mode," which is what caused prior gate-hold desync bugs.

Constructors

Link copied to clipboard
constructor(validTime: Date, features: MutableList<Feature>, rawFeatures: List<MvtFeature>? = null)

Properties

Link copied to clipboard

True after releaseCpuGeometryIfIdle dropped Feature snapshots. Native MVT bytes and GPU meshes remain. Distinct from a tile that parsed with zero features.

Link copied to clipboard
val features: MutableList<Feature>

Copy-on-write so consume-after-upload can MutableList.clear on a worker while the render thread still fingerprints or triangulates a snapshot (ArrayList iterators otherwise throw ConcurrentModificationException and abort Mapbox's JNI render thread).

Link copied to clipboard

Raw MVT feature path (rule: raw-vector-fast-path). Constructor-compatible with the previous val; the setter is private so end-user access is unchanged. Cleared after GPU upload.

Link copied to clipboard

Functions

Link copied to clipboard
Link copied to clipboard
open operator override fun equals(other: Any?): Boolean
Link copied to clipboard
Link copied to clipboard
open override fun hashCode(): Int
Link copied to clipboard
open override fun init(byteArrayOf: ByteArray)
Link copied to clipboard

Parsed empty — not the same as cpuGeometryReleased.

Link copied to clipboard
fun noteLayerMeshReady(layerId: String, expectedLayerIds: Set<String>)

Drop CPU Features only after every GL consumer of this source has a mesh (or is vacuous). Fill/line/circle share one VectorData; consuming after the first mesh starved siblings, left the play-press spinner up, and forced just-in-time re-parse at the playhead.

Link copied to clipboard

iOS consume-after-upload: drop parsed Feature / Gson copies once no renderer is still triangulating this snapshot and every source consumer has a mesh. Mesh cache keys stay stable via remembered fingerprints.

Link copied to clipboard
fun rememberedFeatFingerprint(sourceLayer: String?): Int?
Link copied to clipboard
Link copied to clipboard
fun rememberFeatFingerprint(sourceLayer: String?, fingerprint: Int)
Link copied to clipboard
fun rememberRawFingerprint(fingerprint: Int)
Link copied to clipboard