Skip to content

Commit c44dd39

Browse files
authored
Only send unused event when final handle is dropped. (#18641)
# Objective Fixes #18457 ## Solution Move the Unused even after the check for existing strong handles.
1 parent 89e00b1 commit c44dd39

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

crates/bevy_asset/src/assets.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -462,16 +462,22 @@ impl<A: Asset> Assets<A> {
462462
/// Removes the [`Asset`] with the given `id`.
463463
pub(crate) fn remove_dropped(&mut self, id: AssetId<A>) {
464464
match self.duplicate_handles.get_mut(&id) {
465-
None | Some(0) => {}
465+
None => {}
466+
Some(0) => {
467+
self.duplicate_handles.remove(&id);
468+
}
466469
Some(value) => {
467470
*value -= 1;
468471
return;
469472
}
470473
}
474+
471475
let existed = match id {
472476
AssetId::Index { index, .. } => self.dense_storage.remove_dropped(index).is_some(),
473477
AssetId::Uuid { uuid } => self.hash_map.remove(&uuid).is_some(),
474478
};
479+
480+
self.queued_events.push(AssetEvent::Unused { id });
475481
if existed {
476482
self.queued_events.push(AssetEvent::Removed { id });
477483
}
@@ -553,7 +559,6 @@ impl<A: Asset> Assets<A> {
553559
}
554560
}
555561

556-
assets.queued_events.push(AssetEvent::Unused { id });
557562
assets.remove_dropped(id);
558563
}
559564
}

0 commit comments

Comments
 (0)