diff --git a/Cargo.lock b/Cargo.lock index 614844a..3f12e4a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -990,11 +990,10 @@ dependencies = [ [[package]] name = "glycin" -version = "1.0.0-beta.1" +version = "1.0.0-beta.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79edaeeb158aa9e3ae9323ea4e82795d6aead292f777b7e7c3a6b8410cf41eca" +checksum = "957cc6aa64f96d55a1b56b77b650ae12ca800ed3f29448b8fd06e475f758e387" dependencies = [ - "anyhow", "async-fs", "async-global-executor", "async-lock 3.3.0", @@ -1010,19 +1009,20 @@ dependencies = [ "memfd", "memmap2", "nix", + "thiserror", "zbus", ] [[package]] name = "glycin-utils" -version = "1.0.0-beta.1" +version = "1.0.0-beta.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c0a26dfad24b01886bb76ad449378341e339b007fa950fa11d243def8523470" +checksum = "0f5bc84076438db6800083027ab7266c80c1868d915865467157bc2845c236e9" dependencies = [ - "anyhow", - "gettext-rs", "libseccomp", + "memmap2", "serde", + "thiserror", "zbus", ] diff --git a/Cargo.toml b/Cargo.toml index 9c43d72..e7cf8d1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,13 +14,14 @@ disable-glycin-sandbox = [] x11 = ["ashpd/gtk4_x11"] [dependencies] +glycin = { version = "1.0.0-beta.2" } anyhow = { version = "1.0.66", features = ["backtrace"] } arc-swap = "1.6.0" async-channel = "2.1.0" env_logger = "0.11.0" futures-channel = "0.3.25" futures-lite = "2.1.0" -glycin = "1.0.0-beta.1" + gvdb-macros = "0.1.6" indexmap = "2.0.0" kamadak-exif = "0.5.5" diff --git a/build-aux/flatpak/org.gnome.Loupe.Devel.json b/build-aux/flatpak/org.gnome.Loupe.Devel.json index 0db90de..d96fec4 100644 --- a/build-aux/flatpak/org.gnome.Loupe.Devel.json +++ b/build-aux/flatpak/org.gnome.Loupe.Devel.json @@ -170,7 +170,7 @@ { "type": "git", "url": "https://gitlab.gnome.org/sophie-h/glycin.git", - "commit": "ea409998d8170535a7880201d3f72da4b313d09b" + "commit": "1ab8fbd1d5bb7e3712f06d61a2d4ff31eff4f58e" } ] }, diff --git a/src/decoder/formats/glycin_proxy.rs b/src/decoder/formats/glycin_proxy.rs index 2e8d4d5..b7606cc 100644 --- a/src/decoder/formats/glycin_proxy.rs +++ b/src/decoder/formats/glycin_proxy.rs @@ -49,14 +49,14 @@ impl Glycin { updater.clone().spawn_error_handled(async move { log::trace!("Setting up loader"); - let mut image_request = glycin::Loader::new(file); + let mut loader = glycin::Loader::new(file); #[cfg(feature = "disable-glycin-sandbox")] - image_request.sandbox_mechanism(Some(glycin::SandboxMechanism::NotSandboxed)); + loader.sandbox_mechanism(Some(glycin::SandboxMechanism::NotSandboxed)); - image_request.cancellable(cancellable_); + loader.cancellable(cancellable_); - let image = image_request.request().await?; + let image = loader.load().await?; log::trace!("Image info received"); let mut metadata: Metadata = Metadata::default(); diff --git a/src/decoder/formats/svg.rs b/src/decoder/formats/svg.rs index b5f5669..aed2b18 100644 --- a/src/decoder/formats/svg.rs +++ b/src/decoder/formats/svg.rs @@ -69,14 +69,14 @@ impl Svg { let (wakeup, wakeup_resv) = mpsc::unbounded(); updater.clone().spawn_error_handled(async move { - let mut image_request = glycin::Loader::new(file); + let mut loader = glycin::Loader::new(file); #[cfg(feature = "disable-glycin-sandbox")] - image_request.sandbox_mechanism(Some(glycin::SandboxMechanism::NotSandboxed)); + loader.sandbox_mechanism(Some(glycin::SandboxMechanism::NotSandboxed)); - image_request.cancellable(cancellable.clone()); + loader.cancellable(cancellable.clone()); - let image = image_request.request().await?; + let image = loader.load().await?; let mut metadata: Metadata = Metadata::default(); metadata.set_image_info(image.info().details.clone()); @@ -174,12 +174,12 @@ impl Svg { pub fn render_print(file: &gio::File, width: i32, height: i32) -> anyhow::Result { #[allow(unused_mut)] - let mut image_request = glycin::Loader::new(file.clone()); + let mut loader = glycin::Loader::new(file.clone()); #[cfg(feature = "disable-glycin-sandbox")] - image_request.sandbox_mechanism(Some(glycin::SandboxMechanism::NotSandboxed)); + loader.sandbox_mechanism(Some(glycin::SandboxMechanism::NotSandboxed)); - let image = futures_lite::future::block_on(image_request.request())?; + let image = futures_lite::future::block_on(loader.load())?; let frame_request = glycin::FrameRequest::new().scale(width as u32, height as u32); let frame = futures_lite::future::block_on(image.specific_frame(frame_request))?; diff --git a/src/metadata/mod.rs b/src/metadata/mod.rs index 8a0cd3e..40ec44f 100644 --- a/src/metadata/mod.rs +++ b/src/metadata/mod.rs @@ -74,8 +74,8 @@ impl Metadata { } pub fn set_image_info(&mut self, image_info: ImageInfoDetails) { - if let Some(exif_raw) = image_info.exif.as_ref() { - self.set_exif_bytes(exif_raw.clone()); + if let Some(exif_raw) = image_info.exif.as_ref().and_then(|x| x.get_full().ok()) { + self.set_exif_bytes(exif_raw); } self.image_info = Some(image_info); } diff --git a/src/window.rs b/src/window.rs index 1e06ccf..4c7a908 100644 --- a/src/window.rs +++ b/src/window.rs @@ -566,7 +566,7 @@ impl LpWindow { let filter_supported_formats = gtk::FileFilter::new(); filter_supported_formats.set_name(Some(&gettext("Supported image formats"))); - for mime_type in glycin::image_formats().await { + for mime_type in glycin::supported_mime_types().await { filter_supported_formats.add_mime_type(&mime_type); }