diff --git a/Cargo.lock b/Cargo.lock index 4e3f2ac..b674e1e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1307,8 +1307,6 @@ dependencies = [ "async-channel", "async-lock", "cairo-rs", - "futures-channel", - "futures-lite", "gettext-rs", "gettext-sys", "gio", diff --git a/Cargo.toml b/Cargo.toml index 1fe4f57..dc2a5cb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,8 +20,6 @@ ashpd = { version = "0.9.1", features = ["gtk4_wayland"] } async-channel = "2.1.0" async-lock = "3.4.0" cairo-rs = { version = "0.20.0", features = ["pdf"] } -futures-channel = "0.3.25" -futures-lite = "2.1.0" gettext-rs = { version = "0.7.0", features = ["gettext-system"] } gettext-sys = { version = "0.21.3", features = ["gettext-system"] } gio = { version = "0.20.0", features = ["v2_74"] } diff --git a/src/decoder.rs b/src/decoder.rs index 11906cc..1827bf6 100644 --- a/src/decoder.rs +++ b/src/decoder.rs @@ -24,9 +24,9 @@ pub mod tiling; use std::sync::Arc; use anyhow::Result; +use async_channel as mpsc; pub use formats::RSVG_MAX_SIZE; use formats::*; -use futures_channel::mpsc; use self::tiling::SharedFrameBuffer; use crate::deps::*; @@ -45,7 +45,7 @@ pub struct TileRequest { #[derive(Debug, Clone)] /// Signals update to the renderer pub struct UpdateSender { - sender: mpsc::UnboundedSender, + sender: mpsc::Sender, } #[derive(Debug)] @@ -97,10 +97,12 @@ impl glib::value::ToValueOptional for DecoderError { impl UpdateSender { pub fn send(&self, update: DecoderUpdate) { - let result = self.sender.unbounded_send(update); + let result = self.sender.force_send(update); - if let Err(err) = result { - log::error!("Failed to send update: {err}"); + match result { + Err(err) => log::error!("Failed to send update: {err}"), + Ok(Some(msg)) => log::error!("Unexpectedly replaced the message {msg:?}"), + _ => {} } } @@ -159,7 +161,7 @@ impl Decoder { file: gio::File, mime_type: Option, tiles: Arc, - ) -> (Self, mpsc::UnboundedReceiver) { + ) -> (Self, mpsc::Receiver) { let (sender, receiver) = mpsc::unbounded(); let update_sender = UpdateSender { sender }; diff --git a/src/widgets/image.rs b/src/widgets/image.rs index 373da7b..fa229c3 100644 --- a/src/widgets/image.rs +++ b/src/widgets/image.rs @@ -48,7 +48,6 @@ use std::sync::{Arc, LazyLock}; use adw::prelude::*; use adw::subclass::prelude::*; -use futures_lite::StreamExt; use glib::subclass::Signal; use glib::{Properties, SignalGroup}; diff --git a/src/widgets/image/loading.rs b/src/widgets/image/loading.rs index b7a6d75..b3ff13b 100644 --- a/src/widgets/image/loading.rs +++ b/src/widgets/image/loading.rs @@ -324,12 +324,12 @@ impl LpImage { // Reset background color for reloads imp.set_background_color(None); - let (decoder, mut decoder_update) = + let (decoder, decoder_update) = Decoder::new(file.clone(), self.metadata().mime_type(), tiles.clone()).await; let weak_obj = self.downgrade(); glib::spawn_future_local(async move { - while let Some(update) = decoder_update.next().await { + while let Ok(update) = decoder_update.recv().await { if let Some(obj) = weak_obj.upgrade() { obj.imp().update(update); }