From dc2d0f26f733e6e2404966f1e22f2435ecb69ec6 Mon Sep 17 00:00:00 2001 From: lza_menace Date: Fri, 14 Oct 2022 02:43:50 -0700 Subject: [PATCH] wait for source to become avail --- src/app.rs | 18 +++--------------- src/player.rs | 11 +++++++++++ 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/app.rs b/src/app.rs index 78783bf..146148d 100644 --- a/src/app.rs +++ b/src/app.rs @@ -30,7 +30,6 @@ impl eframe::App for App { // If stream thread is done, start again if self.player.stream_thread.is_finished() { self.player.stream_thread = self.player.start_radio_stream(); - std::thread::sleep(std::time::Duration::from_secs(3)); } if self.player.sink.len() != 1 { @@ -42,21 +41,10 @@ impl eframe::App for App { if ui.button("■").clicked() { let _ = &self.player.sink.pause(); - } - - if ui.button("status").clicked() { - println!( - "is_paused: {}. empty: {}. len: {}. volume: {}.", - &self.player.sink.is_paused(), - &self.player.sink.empty(), - &self.player.sink.len(), - &self.player.sink.volume() - ) - } - - ui.add(egui::Slider::new(&mut self.player.volume, 0.0..=100.0).text("Volume")); - self.player.sink.set_volume(self.player.volume / 100.0); + } }); + ui.add(egui::Slider::new(&mut self.player.volume, 0.0..=100.0).text("Volume")); + self.player.sink.set_volume(self.player.volume / 100.0); // ui.separator(); // ui.heading("Tor"); diff --git a/src/player.rs b/src/player.rs index daccded..655b78b 100644 --- a/src/player.rs +++ b/src/player.rs @@ -32,7 +32,18 @@ impl Player { return t.unwrap() } + pub fn wait_for_source() { + loop { + let r: Result = std::fs::File::open(&crate::RADIO_STREAM); + if r.is_ok() { + return () + } + std::thread::sleep(std::time::Duration::from_secs(1)); + } + } + pub fn get_radio_source(&self) -> rodio::Decoder> { + Self::wait_for_source(); let file: std::io::BufReader = std::io::BufReader::new(std::fs::File::open(&crate::RADIO_STREAM).unwrap()); let source: rodio::Decoder> = rodio::Decoder::new(file).unwrap(); return source