Use tracing for logging

This commit is contained in:
Sophie Herold 2025-12-18 23:15:46 +01:00
parent f255af9f6a
commit 4d6d771ab4
36 changed files with 260 additions and 223 deletions

View file

@ -20,6 +20,7 @@
use std::sync::Arc;
use gtk::prelude::*;
use tracing::Instrument;
use super::*;
use crate::decoder::tiling::{self, SharedFrameBuffer};
@ -47,75 +48,85 @@ impl Glycin {
let (next_frame_send, next_frame_recv) = async_channel::bounded(2);
updater.clone().spawn_error_handled(async move {
let mut metadata: Metadata = Metadata::default();
metadata.set_image_info(image.details().clone());
metadata.set_mime_type(image.mime_type().to_string());
updater.send(DecoderUpdate::Metadata(Box::new(metadata)));
let span = tracing::debug_span!(
"proxy",
image = image
.file()
.and_then(|x| x.basename())
.map(|x| x.display().to_string())
);
updater.clone().spawn_error_handled(
async move {
let mut metadata: Metadata = Metadata::default();
metadata.set_image_info(image.details().clone());
metadata.set_mime_type(image.mime_type().to_string());
updater.send(DecoderUpdate::Metadata(Box::new(metadata)));
let dimensions = (image.details().width(), image.details().height());
tiles.set_original_dimensions(dimensions);
let dimensions = (image.details().width(), image.details().height());
tiles.set_original_dimensions(dimensions);
let frame = image.next_frame().await?;
let frame = image.next_frame().await?;
let mut metadata: Metadata = Metadata::default();
metadata.set_frame_metadata(&frame);
updater.send(DecoderUpdate::Metadata(Box::new(metadata)));
tiles.set_original_dimensions((frame.width() as u32, frame.height() as u32));
let mut metadata: Metadata = Metadata::default();
metadata.set_frame_metadata(&frame);
updater.send(DecoderUpdate::Metadata(Box::new(metadata)));
tiles.set_original_dimensions((frame.width() as u32, frame.height() as u32));
if let Some(delay) = frame.delay() {
updater.send(DecoderUpdate::Animated);
if let Some(delay) = frame.delay() {
updater.send(DecoderUpdate::Animated);
let position = (0, 0);
let position = (0, 0);
let tile = tiling::Tile {
position,
zoom_level: tiling::zoom_to_level(1.),
bleed: 0,
texture: frame.texture(),
};
let tile = tiling::Tile {
position,
zoom_level: tiling::zoom_to_level(1.),
bleed: 0,
texture: frame.texture(),
};
tiles.push_frame(tile, dimensions, delay);
updater.send(DecoderUpdate::Redraw);
tiles.push_frame(tile, dimensions, delay);
updater.send(DecoderUpdate::Redraw);
loop {
if next_frame_recv.recv().await.is_ok() {
loop {
let frame = image.next_frame().await?;
loop {
if next_frame_recv.recv().await.is_ok() {
loop {
let frame = image.next_frame().await?;
let position = (0, 0);
let position = (0, 0);
let tile = tiling::Tile {
position,
zoom_level: tiling::zoom_to_level(1.),
bleed: 0,
texture: frame.texture(),
};
let tile = tiling::Tile {
position,
zoom_level: tiling::zoom_to_level(1.),
bleed: 0,
texture: frame.texture(),
};
tiles.push_frame(tile, dimensions, frame.delay().unwrap_or(delay));
tiles.push_frame(tile, dimensions, frame.delay().unwrap_or(delay));
if tiles.n_frames() >= FRAME_BUFFER {
break;
if tiles.n_frames() >= FRAME_BUFFER {
break;
}
}
} else {
tracing::debug!("Animation handler gone");
return Ok(());
}
} else {
log::debug!("Animation handler gone");
return Ok(());
}
} else {
let tile = tiling::Tile {
position: (0, 0),
zoom_level: tiling::zoom_to_level(1.),
bleed: 0,
texture: frame.texture(),
};
tiles.push(tile);
}
} else {
let tile = tiling::Tile {
position: (0, 0),
zoom_level: tiling::zoom_to_level(1.),
bleed: 0,
texture: frame.texture(),
};
tiles.push(tile);
Ok(())
}
Ok(())
});
.instrument(span),
);
Self {
cancellable,

View file

@ -87,7 +87,7 @@ impl Svg {
};
if cancellable.is_cancelled() {
log::debug!("Terminating SVG decoder thread");
tracing::debug!("Terminating SVG decoder thread");
break;
}

View file

@ -104,7 +104,7 @@ impl Tile {
let area_with_bleed = round(&self.area_with_bleed().scale(zoom, zoom));
if area_with_bleed.width() < 1. || area_with_bleed.height() < 1. {
log::warn!("Trying to draw image with dimensions smaller than 1");
tracing::warn!("Trying to draw image with dimensions smaller than 1");
return;
}
@ -169,7 +169,7 @@ impl FrameBuffer {
if let Some(tiling) = self.images.front() {
tiling.add_to_snapshot(snapshot, zoom, options);
} else {
log::error!("Trying to snapshot empty tiling queue");
tracing::error!("Trying to snapshot empty tiling queue");
}
}
@ -227,7 +227,7 @@ impl TiledImage {
.flat_map(|(_, tiles)| tiles)
.collect();
log::trace!("Rendering {} tiles", tiles.len());
tracing::trace!("Rendering {} tiles", tiles.len());
// Scale from application pixels back to physical pixels
snapshot.scale(1. / options.scaling as f32, 1. / options.scaling as f32);
@ -396,11 +396,13 @@ impl TiledImage {
missing_tiles = next_missing_tiles;
} else {
log::error!("Images should never have multiple 'Simple' layers: {tile_layer:?}");
tracing::error!(
"Images should never have multiple 'Simple' layers: {tile_layer:?}"
);
}
}
log::trace!(
tracing::trace!(
"Cleanup kept {} tiles",
kept_tiles
.tile_layers