@@ -5,70 +5,45 @@ pub fn print_banner() {
55 println ! ( "TrackMaker-rs" ) ;
66}
77
8- pub fn run_progress_loop (
8+ pub fn update_progress (
99 shared : & AppShared ,
1010 recording_duration_samples : usize ,
1111 progress_manager : & ProgressManager ,
1212) {
13- loop {
14- std:: thread:: sleep ( std:: time:: Duration :: from_millis (
15- crate :: utils:: consts:: PROGRESS_UPDATE_INTERVAL_MS ,
16- ) ) ;
13+ let current_state = {
14+ let state = shared
15+ . app_state
16+ . lock ( )
17+ . unwrap ( ) ;
18+ state. clone ( )
19+ } ;
1720
18- let current_state = {
19- let state = shared
20- . app_state
21- . lock ( )
22- . unwrap ( ) ;
23- state. clone ( )
24- } ;
25-
26- match current_state {
27- AppState :: Recording => {
28- let recorded_samples = {
29- let recorded = shared
30- . recorded_audio
31- . lock ( )
32- . unwrap ( ) ;
33- recorded. len ( )
34- } ;
35- let _ = progress_manager
36- . set_position ( "recording" , recorded_samples as u64 ) ;
37- }
38- AppState :: Playing => {
39- if progress_manager. exists ( "recording" )
40- && !progress_manager
41- . is_finished ( "recording" )
42- . unwrap_or ( true )
43- {
44- let _ = progress_manager. finish_and_clear ( "recording" ) ;
45- }
46-
47- if !progress_manager. exists ( "playback" ) {
48- let _ = progress_manager. create_bar (
49- "playback" ,
50- recording_duration_samples as u64 ,
51- templates:: PLAYBACK ,
52- "Playing..." ,
53- ) ;
54- }
55-
56- let remaining_samples = {
57- let playback = shared
58- . playback_buffer
59- . lock ( )
60- . unwrap ( ) ;
61- playback. len ( )
62- } ;
63- let played_samples =
64- recording_duration_samples - remaining_samples;
65- let _ = progress_manager
66- . set_position ( "playback" , played_samples as u64 ) ;
67- }
68- AppState :: Idle => {
69- progress_manager. clear_all ( ) ;
70- break ;
71- }
21+ match current_state {
22+ AppState :: Recording => {
23+ let recorded_samples = {
24+ let recorded = shared
25+ . recorded_audio
26+ . lock ( )
27+ . unwrap ( ) ;
28+ recorded. len ( )
29+ } ;
30+ let _ = progress_manager
31+ . set_position ( "recording" , recorded_samples as u64 ) ;
32+ }
33+ AppState :: Playing => {
34+ let remaining_samples = {
35+ let playback = shared
36+ . playback_buffer
37+ . lock ( )
38+ . unwrap ( ) ;
39+ playback. len ( )
40+ } ;
41+ let played_samples =
42+ recording_duration_samples - remaining_samples;
43+ let _ = progress_manager
44+ . set_position ( "playback" , played_samples as u64 ) ;
45+ }
46+ AppState :: Idle => {
7247 }
7348 }
7449}
0 commit comments