struct SpatialNodeComparer {
    ref_spatial_node_index: SpatialNodeIndex,
    spatial_nodes: FastHashMap<SpatialNodeKey, TransformKey>,
    compare_cache: FastHashMap<(SpatialNodeKey, SpatialNodeKey), bool>,
    referenced_frames: HashSet<FrameId, BuildHasherDefault<FxHasher>>,
}Expand description
A helper for comparing spatial nodes between frames. The comparisons are done by-value, so that if the shape of the spatial node tree changes, invalidations aren’t done simply due to the spatial node index changing between display lists.
Fields§
§ref_spatial_node_index: SpatialNodeIndexThe root spatial node index of the tile cache
spatial_nodes: FastHashMap<SpatialNodeKey, TransformKey>Maintains a map of currently active transform keys
compare_cache: FastHashMap<(SpatialNodeKey, SpatialNodeKey), bool>A cache of recent comparisons between prev and current spatial nodes
referenced_frames: HashSet<FrameId, BuildHasherDefault<FxHasher>>A set of frames that we need to retain spatial node entries for
Implementations§
Source§impl SpatialNodeComparer
 
impl SpatialNodeComparer
Sourcefn next_frame(&mut self, ref_spatial_node_index: SpatialNodeIndex)
 
fn next_frame(&mut self, ref_spatial_node_index: SpatialNodeIndex)
Advance to the next frame
Sourcefn register_used_transform(
    &mut self,
    spatial_node_index: SpatialNodeIndex,
    frame_id: FrameId,
    spatial_tree: &SpatialTree,
)
 
fn register_used_transform( &mut self, spatial_node_index: SpatialNodeIndex, frame_id: FrameId, spatial_tree: &SpatialTree, )
Register a transform that is used, and build the transform key for it if new.
Sourcefn are_transforms_equivalent(
    &mut self,
    prev_spatial_node_key: &SpatialNodeKey,
    curr_spatial_node_key: &SpatialNodeKey,
) -> bool
 
fn are_transforms_equivalent( &mut self, prev_spatial_node_key: &SpatialNodeKey, curr_spatial_node_key: &SpatialNodeKey, ) -> bool
Return true if the transforms for two given spatial nodes are considered equivalent
Sourcefn retain_for_frame(&mut self, frame_id: FrameId)
 
fn retain_for_frame(&mut self, frame_id: FrameId)
Ensure that the comparer won’t GC any nodes for a given frame id
Auto Trait Implementations§
impl Freeze for SpatialNodeComparer
impl RefUnwindSafe for SpatialNodeComparer
impl Send for SpatialNodeComparer
impl Sync for SpatialNodeComparer
impl Unpin for SpatialNodeComparer
impl UnwindSafe for SpatialNodeComparer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
 
impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
 
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
 
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts 
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
 
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts 
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more