mirror of
https://github.com/Zenithsiz/zsw.git
synced 2026-02-03 17:52:15 +00:00
Fixed main thread pinning the CPU at 100% if all images were removed after a while.
This commit is contained in:
parent
5814a1d968
commit
8434e02487
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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 })
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user