Fixed main thread pinning the CPU at 100% if all images were removed after a while.

This commit is contained in:
Filipe Rodrigues 2021-12-30 22:54:46 +00:00
parent 5814a1d968
commit 8434e02487
2 changed files with 7 additions and 7 deletions

View File

@ -144,6 +144,7 @@ impl GlImage {
}
}
// TODO: Redo all of this, seems to cause some CPU pinning *sometimes*
fn get_image(
image_rxs: &mut VecDeque<ImageReceiver>, image_loader: &ImageLoader, request: ImageRequest, force_wait: bool,
) -> Option<Image> {
@ -152,7 +153,7 @@ fn get_image(
loop {
// If we're not force waiting and we've gone through all image receivers,
// quit
if !force_wait && cur_idx == image_rxs.len() {
if !force_wait && cur_idx >= image_rxs.len() {
return None;
}
@ -170,8 +171,7 @@ fn get_image(
}
// If we're force waiting and we reached the end, sleep for a bit
if force_wait && cur_idx + 1 == image_rxs.len() {
log::trace!("No image receivers were ready");
if force_wait && (cur_idx + 1) % image_rxs.len() == 0 {
std::thread::sleep(timeout);
}

View File

@ -37,12 +37,12 @@ impl ImageLoader {
let request_rx = request_rx.clone();
let path_rx = path_loader.receiver();
thread::Builder::new()
.name(format!("Image processor #{thread_idx}"))
.name(format!("Image loader #{thread_idx}"))
.spawn(move || match self::image_loader(&request_rx, &path_rx, args) {
Ok(()) => log::debug!("Image processor #{thread_idx} successfully quit"),
Err(err) => log::warn!("Image processor #{thread_idx} returned `Err`: {err:?}"),
Ok(()) => log::debug!("Image loader #{thread_idx} successfully quit"),
Err(err) => log::warn!("Image loader #{thread_idx} returned `Err`: {err:?}"),
})
.context("Unable to spawn image processor")?;
.context("Unable to spawn image loader")?;
}
Ok(Self { request_tx })