WIP some minor fixes
This commit is contained in:
parent
086ab048fc
commit
a132d30f59
3 changed files with 20 additions and 12 deletions
|
@ -43,7 +43,7 @@ impl EventHandler for MPDDisplay {
|
||||||
fn draw(&mut self, ctx: &mut ggez::Context) -> Result<(), GameError> {
|
fn draw(&mut self, ctx: &mut ggez::Context) -> Result<(), GameError> {
|
||||||
graphics::clear(ctx, Color::BLACK);
|
graphics::clear(ctx, Color::BLACK);
|
||||||
|
|
||||||
self.notice_text.draw(ctx, DrawParam::default());
|
self.notice_text.draw(ctx, DrawParam::default())?;
|
||||||
|
|
||||||
graphics::present(ctx)
|
graphics::present(ctx)
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,11 +68,12 @@ fn main() -> Result<(), String> {
|
||||||
..
|
..
|
||||||
},
|
},
|
||||||
is_synthetic: _,
|
is_synthetic: _,
|
||||||
} => {
|
} => match keycode {
|
||||||
if let event::KeyCode::Escape = keycode {
|
event::KeyCode::Escape | event::KeyCode::Q => {
|
||||||
*control_flow = ControlFlow::Exit;
|
*control_flow = ControlFlow::Exit;
|
||||||
}
|
}
|
||||||
}
|
_ => (),
|
||||||
|
},
|
||||||
x => println!("Other window event fired: {:?}", x),
|
x => println!("Other window event fired: {:?}", x),
|
||||||
},
|
},
|
||||||
event::winit_event::Event::MainEventsCleared => {
|
event::winit_event::Event::MainEventsCleared => {
|
||||||
|
|
|
@ -240,7 +240,7 @@ impl MPDHandler {
|
||||||
)
|
)
|
||||||
.map_err(|_| String::from("Failed to get TCP connection"))?;
|
.map_err(|_| String::from("Failed to get TCP connection"))?;
|
||||||
|
|
||||||
let mut s = Arc::new(RwLock::new(Self {
|
let s = Arc::new(RwLock::new(Self {
|
||||||
art_data: Vec::new(),
|
art_data: Vec::new(),
|
||||||
art_data_size: 0,
|
art_data_size: 0,
|
||||||
current_song_filename: String::new(),
|
current_song_filename: String::new(),
|
||||||
|
@ -271,12 +271,12 @@ impl MPDHandler {
|
||||||
stop_flag: Arc::new(AtomicBool::new(false)),
|
stop_flag: Arc::new(AtomicBool::new(false)),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
let mut s_clone = s.clone();
|
let s_clone = s.clone();
|
||||||
let mut thread = Arc::new(Mutex::new(thread::spawn(|| Self::handler_loop(s_clone))));
|
let thread = Arc::new(Mutex::new(thread::spawn(|| Self::handler_loop(s_clone))));
|
||||||
|
|
||||||
s.write()
|
s.write()
|
||||||
.map_err(|_| String::from("Failed to start MPDHandler thread"))?
|
.map_err(|_| String::from("Failed to store thread handle in MPDHandler"))?
|
||||||
.self_thread = Some(thread.clone());
|
.self_thread = Some(thread);
|
||||||
|
|
||||||
Ok(s)
|
Ok(s)
|
||||||
}
|
}
|
||||||
|
@ -329,6 +329,13 @@ impl MPDHandler {
|
||||||
'main: loop {
|
'main: loop {
|
||||||
if !Self::is_reading_picture(h.clone()) {
|
if !Self::is_reading_picture(h.clone()) {
|
||||||
thread::sleep(SLEEP_DURATION);
|
thread::sleep(SLEEP_DURATION);
|
||||||
|
if let Ok(write_handle) = h.write() {
|
||||||
|
if write_handle.self_thread.is_none() {
|
||||||
|
// main thread failed to store handle to this thread
|
||||||
|
println!("MPDHandle thread stopping due to failed handle storage");
|
||||||
|
break 'main;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Err(err_string) =
|
if let Err(err_string) =
|
||||||
|
@ -609,10 +616,10 @@ impl MPDHandler {
|
||||||
|
|
||||||
fn is_reading_picture(h: Arc<RwLock<MPDHandler>>) -> bool {
|
fn is_reading_picture(h: Arc<RwLock<MPDHandler>>) -> bool {
|
||||||
if let Ok(read_handle) = h.read() {
|
if let Ok(read_handle) = h.read() {
|
||||||
return read_handle.poll_state == PollState::ReadPicture
|
read_handle.poll_state == PollState::ReadPicture
|
||||||
|| read_handle.poll_state == PollState::ReadPictureInDir;
|
|| read_handle.poll_state == PollState::ReadPictureInDir
|
||||||
} else {
|
} else {
|
||||||
return false;
|
false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue