refactor: use jiff instead of time

This commit is contained in:
Vukašin Vojinović 2026-03-17 16:31:19 +01:00 committed by Victoria Brekenfeld
parent 2ca99c670a
commit 89a50197d2
4 changed files with 8 additions and 39 deletions

13
Cargo.lock generated
View file

@ -847,6 +847,7 @@ dependencies = [
"iced_tiny_skia", "iced_tiny_skia",
"id_tree", "id_tree",
"indexmap 2.13.0", "indexmap 2.13.0",
"jiff",
"keyframe", "keyframe",
"libcosmic", "libcosmic",
"libdisplay-info", "libdisplay-info",
@ -868,7 +869,6 @@ dependencies = [
"smithay", "smithay",
"smithay-egui", "smithay-egui",
"thiserror 2.0.18", "thiserror 2.0.18",
"time",
"tiny-skia", "tiny-skia",
"tracing", "tracing",
"tracing-journald", "tracing-journald",
@ -3537,15 +3537,6 @@ dependencies = [
"syn", "syn",
] ]
[[package]]
name = "num_threads"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9"
dependencies = [
"libc",
]
[[package]] [[package]]
name = "objc" name = "objc"
version = "0.2.7" version = "0.2.7"
@ -5322,9 +5313,7 @@ checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c"
dependencies = [ dependencies = [
"deranged", "deranged",
"itoa", "itoa",
"libc",
"num-conv", "num-conv",
"num_threads",
"powerfmt", "powerfmt",
"serde_core", "serde_core",
"time-core", "time-core",

View file

@ -54,11 +54,7 @@ sanitize-filename = "0.6.0"
serde = { version = "1", features = ["derive"] } serde = { version = "1", features = ["derive"] }
serde_json = "1" serde_json = "1"
thiserror = "2.0.18" thiserror = "2.0.18"
time = { version = "0.3.47", features = [ jiff = "0.2"
"macros",
"formatting",
"local-offset",
] }
tiny-skia = "0.11" tiny-skia = "0.11"
tracing = { version = "0.1.44", features = [ tracing = { version = "0.1.44", features = [
"max_level_debug", "max_level_debug",

View file

@ -115,7 +115,6 @@ use smithay::{
}, },
xwayland::XWaylandClientData, xwayland::XWaylandClientData,
}; };
use time::UtcOffset;
use tracing::warn; use tracing::warn;
#[cfg(feature = "systemd")] #[cfg(feature = "systemd")]
@ -242,7 +241,7 @@ pub struct Common {
pub clock: Clock<Monotonic>, pub clock: Clock<Monotonic>,
pub startup_done: Arc<AtomicBool>, pub startup_done: Arc<AtomicBool>,
pub should_stop: bool, pub should_stop: bool,
pub local_offset: time::UtcOffset,
pub gesture_state: Option<GestureState>, pub gesture_state: Option<GestureState>,
pub kiosk_child: Option<Child>, pub kiosk_child: Option<Child>,
@ -635,7 +634,6 @@ impl State {
.with_context(|| "Failed to load languages") .with_context(|| "Failed to load languages")
.unwrap(); .unwrap();
let local_offset = UtcOffset::current_local_offset().expect("No yet multithreaded");
let clock = Clock::new(); let clock = Clock::new();
let config = Config::load(&handle); let config = Config::load(&handle);
let compositor_state = CompositorState::new::<Self>(dh); let compositor_state = CompositorState::new::<Self>(dh);
@ -749,8 +747,6 @@ impl State {
popups: PopupManager::default(), popups: PopupManager::default(),
shell, shell,
local_offset,
clock, clock,
startup_done: Arc::new(AtomicBool::new(false)), startup_done: Arc::new(AtomicBool::new(false)),
should_stop: false, should_stop: false,

View file

@ -22,11 +22,7 @@ use crate::{
}; };
pub fn screenshot_window(state: &mut State, surface: &CosmicSurface) { pub fn screenshot_window(state: &mut State, surface: &CosmicSurface) {
fn render_window<R>( fn render_window<R>(renderer: &mut R, window: &CosmicSurface) -> anyhow::Result<()>
renderer: &mut R,
window: &CosmicSurface,
offset: &time::UtcOffset,
) -> anyhow::Result<()>
where where
R: Renderer + ImportAll + Offscreen<GlesRenderbuffer> + ExportMem, R: Renderer + ImportAll + Offscreen<GlesRenderbuffer> + ExportMem,
R::TextureId: Clone + 'static, R::TextureId: Clone + 'static,
@ -65,17 +61,13 @@ pub fn screenshot_window(state: &mut State, surface: &CosmicSurface) {
let gl_data = renderer.map_texture(&mapping)?; let gl_data = renderer.map_texture(&mapping)?;
if let Ok(Some(path)) = xdg_user::pictures() { if let Ok(Some(path)) = xdg_user::pictures() {
let local_timestamp = time::OffsetDateTime::now_utc().to_offset(*offset); let local_timestamp = jiff::Zoned::now();
let mut title = window.title(); let mut title = window.title();
title.truncate(227); // 255 - time - png title.truncate(227); // 255 - time - png
let name = sanitize_filename::sanitize(format!( let name = sanitize_filename::sanitize(format!(
"{}_{}.png", "{}_{}.png",
title, title,
local_timestamp local_timestamp.strftime("%Y-%m-%d_%H:%M:%S_%4f"),
.format(time::macros::format_description!(
"[year]-[month]-[day]_[hour]:[minute]:[second]_[subsecond digits:4]"
))
.unwrap(),
)); ));
let file = std::fs::File::create(path.join(name))?; let file = std::fs::File::create(path.join(name))?;
@ -108,12 +100,8 @@ pub fn screenshot_window(state: &mut State, surface: &CosmicSurface) {
}) })
.with_context(|| "Failed to get renderer for screenshot") .with_context(|| "Failed to get renderer for screenshot")
.and_then(|renderer| match renderer { .and_then(|renderer| match renderer {
RendererRef::Glow(renderer) => { RendererRef::Glow(renderer) => render_window(renderer, surface),
render_window(renderer, surface, &state.common.local_offset) RendererRef::GlMulti(mut renderer) => render_window(&mut renderer, surface),
}
RendererRef::GlMulti(mut renderer) => {
render_window(&mut renderer, surface, &state.common.local_offset)
}
}); });
if let Err(err) = res { if let Err(err) = res {
warn!(?err, "Failed to take screenshot") warn!(?err, "Failed to take screenshot")