@@ -92,33 +92,30 @@ impl Actor {
9292
9393 let mut pending_change = false ;
9494 let mut pending_time_jump = false ;
95- let mut debounce_interval = time:: interval ( DEBOUNCE ) ;
95+ let debounce = time:: sleep ( DEBOUNCE ) ;
96+ tokio:: pin!( debounce) ;
9697 let mut wall_time_interval = time:: interval ( POLL_WALL_TIME_INTERVAL ) ;
9798
9899 loop {
99100 tokio:: select! {
100- biased;
101-
102- _ = debounce_interval. tick( ) => {
103- if pending_change || pending_time_jump {
104- self . handle_potential_change( pending_time_jump) . await ;
105- pending_change = false ;
106- pending_time_jump = false ;
107- }
101+ _ = & mut debounce, if pending_change || pending_time_jump => {
102+ self . handle_potential_change( pending_time_jump) . await ;
103+ pending_change = false ;
104+ pending_time_jump = false ;
108105 }
109106 _ = wall_time_interval. tick( ) => {
110107 trace!( "tick: wall_time_interval" ) ;
111108 if self . check_wall_time_advance( ) {
112109 pending_time_jump = true ;
113- debounce_interval . reset_immediately ( ) ;
110+ debounce . as_mut ( ) . reset ( Instant :: now ( ) + DEBOUNCE ) ;
114111 }
115112 }
116113 event = self . mon_receiver. recv( ) => {
117114 match event {
118115 Some ( NetworkMessage :: Change ) => {
119116 trace!( "network activity detected" ) ;
120117 pending_change = true ;
121- debounce_interval . reset_immediately ( ) ;
118+ debounce . as_mut ( ) . reset ( Instant :: now ( ) + DEBOUNCE ) ;
122119 }
123120 None => {
124121 debug!( "shutting down, network monitor receiver gone" ) ;
@@ -131,7 +128,7 @@ impl Actor {
131128 Some ( ActorMessage :: NetworkChange ) => {
132129 trace!( "external network activity detected" ) ;
133130 pending_change = true ;
134- debounce_interval . reset_immediately ( ) ;
131+ debounce . as_mut ( ) . reset ( Instant :: now ( ) + DEBOUNCE ) ;
135132 }
136133 None => {
137134 debug!( "shutting down, actor receiver gone" ) ;
0 commit comments