@@ -180,7 +180,12 @@ impl AssetSourceBuilder {
180180 id : id. clone ( ) ,
181181 reader,
182182 writer,
183- processed_reader : self . processed_reader . as_mut ( ) . map ( |r| r ( ) ) ,
183+ processed_reader : self
184+ . processed_reader
185+ . as_mut ( )
186+ . map ( |r| r ( ) )
187+ . map ( Into :: < Arc < _ > > :: into) ,
188+ ungated_processed_reader : None ,
184189 processed_writer,
185190 event_receiver : None ,
186191 watcher : None ,
@@ -386,7 +391,8 @@ pub struct AssetSource {
386391 id : AssetSourceId < ' static > ,
387392 reader : Box < dyn ErasedAssetReader > ,
388393 writer : Option < Box < dyn ErasedAssetWriter > > ,
389- processed_reader : Option < Box < dyn ErasedAssetReader > > ,
394+ processed_reader : Option < Arc < dyn ErasedAssetReader > > ,
395+ ungated_processed_reader : Option < Arc < dyn ErasedAssetReader > > ,
390396 processed_writer : Option < Box < dyn ErasedAssetWriter > > ,
391397 watcher : Option < Box < dyn AssetWatcher > > ,
392398 processed_watcher : Option < Box < dyn AssetWatcher > > ,
@@ -562,7 +568,8 @@ impl AssetSource {
562568 /// the [`AssetProcessor`](crate::AssetProcessor) has finished processing the requested asset.
563569 pub ( crate ) fn gate_on_processor ( & mut self , processing_state : Arc < ProcessingState > ) {
564570 if let Some ( reader) = self . processed_reader . take ( ) {
565- self . processed_reader = Some ( Box :: new ( ProcessorGatedReader :: new (
571+ self . ungated_processed_reader = Some ( reader. clone ( ) ) ;
572+ self . processed_reader = Some ( Arc :: new ( ProcessorGatedReader :: new (
566573 self . id ( ) ,
567574 reader,
568575 processing_state,
0 commit comments