wait for source to become avail

irc-tor
lza_menace 2 years ago
parent eed77e6740
commit dc2d0f26f7

@ -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");

@ -32,7 +32,18 @@ impl Player {
return t.unwrap()
}
pub fn wait_for_source() {
loop {
let r: Result<std::fs::File, std::io::Error> = 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<std::io::BufReader<std::fs::File>> {
Self::wait_for_source();
let file: std::io::BufReader<std::fs::File> = std::io::BufReader::new(std::fs::File::open(&crate::RADIO_STREAM).unwrap());
let source: rodio::Decoder<std::io::BufReader<std::fs::File>> = rodio::Decoder::new(file).unwrap();
return source