Skip to content

Commit ab30709

Browse files
committed
revert 'free_unused_asset_system' ordering to allow 1 frame delay for asset removal
1 parent 01291b4 commit ab30709

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

crates/bevy_asset/src/asset_server.rs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -525,14 +525,13 @@ impl AssetServer {
525525
}
526526
}
527527

528-
fn free_unused_assets_system_ref(asset_server: &AssetServer) {
529-
// note: order of these function is important.
530-
asset_server.mark_unused_assets();
528+
fn free_unused_assets_system_impl(asset_server: &AssetServer) {
531529
asset_server.free_unused_assets();
530+
asset_server.mark_unused_assets();
532531
}
533532

534533
pub fn free_unused_assets_system(asset_server: Res<AssetServer>) {
535-
free_unused_assets_system_ref(&asset_server);
534+
free_unused_assets_system_impl(&asset_server);
536535
}
537536

538537
#[cfg(test)]
@@ -761,18 +760,24 @@ mod test {
761760

762761
// mimics one full frame
763762
let tick = |server: &AssetServer, assets: &mut Assets<PngAsset>| {
764-
free_unused_assets_system_ref(server);
763+
free_unused_assets_system_impl(server);
765764
server.update_asset_storage(assets);
766765
};
767766

768767
tick(&asset_server, &mut assets);
769768
// asset should exist and be loaded at this point
770769
assert_eq!(LoadState::Loaded, asset_server.get_load_state(id));
770+
assert!(assets.get(&handle).is_some());
771771

772-
// after dropping the handle, next call to `tick` should
773-
// remove the asset and reset the `LoadState`.
772+
// after dropping the handle, next call to `tick` will prepare the assets for removal.
774773
drop(handle);
775774
tick(&asset_server, &mut assets);
775+
assert_eq!(LoadState::Loaded, asset_server.get_load_state(id));
776+
assert!(assets.get(id).is_some());
777+
778+
// second call to tick will actually remove the asset.
779+
tick(&asset_server, &mut assets);
776780
assert_eq!(LoadState::NotLoaded, asset_server.get_load_state(id));
781+
assert!(assets.get(id).is_none());
777782
}
778783
}

0 commit comments

Comments
 (0)