image/printing: Use cairo renderer for texture

On some systems, to_node -> render_texture generates empty or garbled
textures since GTK 4.18 GNOME/gtk#7464. This does not happen when using the cairo
renderer.

Closes #488
This commit is contained in:
Sophie Herold 2025-04-10 15:50:13 +02:00
parent cc061312cd
commit a49096ffde
2 changed files with 12 additions and 3 deletions

View file

@ -1,4 +1,4 @@
// Copyright (c) 2023-2024 Sophie Herold
// Copyright (c) 2023-2025 Sophie Herold
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@ -42,8 +42,16 @@ impl LpImage {
.add_to_snapshot(&snapshot, scale, &render_options);
let node = snapshot.to_node()?;
let renderer = self.root()?.renderer()?;
Some(renderer.render_texture(&node, None))
let renderer = gsk::CairoRenderer::new();
renderer
.realize_for_display(&gdk::Display::default()?)
.ok()?;
let texture = renderer.render_texture(&node, None);
renderer.unrealize();
Some(texture)
}
}