@@ -15,7 +15,7 @@ use crate::PyImageFileDirectory;
1515#[ pyclass( name = "TIFF" , frozen) ]
1616pub ( crate ) struct PyTIFF {
1717 tiff : TIFF ,
18- reader : Arc < dyn AsyncFileReader > ,
18+ reader : Box < dyn AsyncFileReader > ,
1919}
2020
2121#[ pymethods]
@@ -29,13 +29,15 @@ impl PyTIFF {
2929 store : StoreInput ,
3030 prefetch : u64 ,
3131 ) -> PyResult < Bound < ' py , PyAny > > {
32- let reader = store. into_async_file_reader ( path) ;
32+ let mut reader = store. into_async_file_reader ( path) ;
3333
3434 let cog_reader = future_into_py ( py, async move {
35- let metadata_fetch = PrefetchBuffer :: new ( reader. clone ( ) , prefetch) . await . unwrap ( ) ;
36- let mut metadata_reader = TiffMetadataReader :: try_open ( & metadata_fetch) . await . unwrap ( ) ;
35+ let mut metadata_fetch = PrefetchBuffer :: new ( & mut reader, prefetch) . await . unwrap ( ) ;
36+ let mut metadata_reader = TiffMetadataReader :: try_open ( & mut metadata_fetch)
37+ . await
38+ . unwrap ( ) ;
3739 let ifds = metadata_reader
38- . read_all_ifds ( & metadata_fetch)
40+ . read_all_ifds ( & mut metadata_fetch)
3941 . await
4042 . unwrap ( ) ;
4143 let tiff = TIFF :: new ( ifds) ;
@@ -57,7 +59,7 @@ impl PyTIFF {
5759 y : usize ,
5860 z : usize ,
5961 ) -> PyResult < Bound < ' py , PyAny > > {
60- let reader = self . reader . clone ( ) ;
62+ let reader = & self . reader ;
6163 let ifd = self
6264 . tiff
6365 . ifds ( )
@@ -67,7 +69,7 @@ impl PyTIFF {
6769 // TODO: avoid this clone; add Arc to underlying rust code?
6870 . clone ( ) ;
6971 future_into_py ( py, async move {
70- let tile = ifd. fetch_tile ( x, y, reader. as_ref ( ) ) . await . unwrap ( ) ;
72+ let tile = ifd. fetch_tile ( x, y, reader. as_mut ( ) ) . await . unwrap ( ) ;
7173 Ok ( PyTile :: new ( tile) )
7274 } )
7375 }
0 commit comments