@@ -9,7 +9,6 @@ use std::error::Error;
99
1010struct TwoWayPressureValve {
1111 spawned : usize ,
12- pressure : i64 ,
1312 recv_ch : Receiver < Vec < u32 > > ,
1413 dims : WindowDimensions ,
1514}
@@ -20,20 +19,16 @@ impl Iterator for TwoWayPressureValve {
2019 /// dynamically allocates or frees vecs in the pipe depending on pressure
2120 fn next ( & mut self ) -> Option < Vec < u32 > > {
2221 match self . recv_ch . try_recv ( ) {
23- Ok ( buf) => {
24- self . pressure = -i64:: try_from ( self . recv_ch . len ( ) ) . unwrap ( ) ;
25-
26- Some ( if self . pressure < -2 {
27- drop ( buf) ;
28- self . spawned -= 1 ;
29- let Ok ( buf) = self . recv_ch . recv ( ) else {
30- return None ;
31- } ;
32- buf
33- } else {
34- buf
35- } )
36- }
22+ Ok ( buf) => Some ( if self . recv_ch . len ( ) > 2 {
23+ drop ( buf) ;
24+ self . spawned -= 1 ;
25+ let Ok ( buf) = self . recv_ch . recv ( ) else {
26+ return None ;
27+ } ;
28+ buf
29+ } else {
30+ buf
31+ } ) ,
3732 Err ( TryRecvError :: Disconnected ) => None ,
3833 Err ( TryRecvError :: Empty ) => Some ( if self . spawned < 100 {
3934 self . spawned += 1 ;
@@ -52,18 +47,11 @@ fn mandelbrot_generator(conf: Config) -> (Sender<Vec<u32>>, Receiver<Vec<u32>>)
5247 let ( return_send_ch, recv_ch) = channel ( ) ;
5348 let ( send_ch, return_recv_ch) = channel ( ) ;
5449
55- //for _ in 0..5 {
56- // return_send_ch
57- // .send(vec![0; conf.dims.flat_length()])
58- // .unwrap();
59- //}
60-
6150 std:: thread:: spawn ( move || {
6251 let mut scale = conf. starting_scale ;
6352
6453 let iter = TwoWayPressureValve {
6554 spawned : 0 ,
66- pressure : 0 ,
6755 recv_ch,
6856 dims : conf. dims ,
6957 } ;
0 commit comments