aboutsummaryrefslogtreecommitdiff
path: root/fiv-thumbnail.c
diff options
context:
space:
mode:
authorPřemysl Eric Janouch <p@janouch.name>2024-01-26 21:58:18 +0100
committerPřemysl Eric Janouch <p@janouch.name>2024-01-28 01:48:28 +0100
commit604594a8f1d048b516120ba98eba71302e2043b4 (patch)
tree22e2923cadd1413503d1527bb10efbaaf1c09d81 /fiv-thumbnail.c
parent9acab00bcc53d3adc52f1681d733e57dcb3c3f0d (diff)
downloadfiv-604594a8f1d048b516120ba98eba71302e2043b4.tar.gz
fiv-604594a8f1d048b516120ba98eba71302e2043b4.tar.xz
fiv-604594a8f1d048b516120ba98eba71302e2043b4.zip
Prepare for parallelized colour management
This rewrite is more or less necessary for: - colour-managed browser thumbnails, - asynchronous image loading, - turning fiv-io into a reusable library. Little CMS has a fairly terrible API in this regard.
Diffstat (limited to 'fiv-thumbnail.c')
-rw-r--r--fiv-thumbnail.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/fiv-thumbnail.c b/fiv-thumbnail.c
index 6ff1246..80f378e 100644
--- a/fiv-thumbnail.c
+++ b/fiv-thumbnail.c
@@ -137,10 +137,12 @@ might_be_a_thumbnail(const char *path_or_uri)
static FivIoImage *
render(GFile *target, GBytes *data, gboolean *color_managed, GError **error)
{
+ FivIoCmm *cmm = fiv_io_cmm_get_default();
FivIoOpenContext ctx = {
.uri = g_file_get_uri(target),
// Remember to synchronize changes with adjust_thumbnail().
- .screen_profile = fiv_io_profile_new_sRGB(),
+ .cmm = cmm,
+ .screen_profile = fiv_io_cmm_get_profile_sRGB(cmm),
.screen_dpi = 96,
.first_frame_only = TRUE,
// Only using this array as a redirect.
@@ -182,9 +184,11 @@ adjust_thumbnail(FivIoImage *thumbnail, double row_height)
FivIoRenderClosure *closure = thumbnail->render;
if (closure && orientation <= FivIoOrientation0) {
// Remember to synchronize changes with render().
- FivIoProfile *screen_profile = fiv_io_profile_new_sRGB();
+ FivIoCmm *cmm = fiv_io_cmm_get_default();
+ FivIoProfile *screen_profile = fiv_io_cmm_get_profile_sRGB(cmm);
// This API doesn't accept non-uniform scaling; prefer a vertical fit.
- FivIoImage *scaled = closure->render(closure, screen_profile, scale_y);
+ FivIoImage *scaled =
+ closure->render(closure, cmm, screen_profile, scale_y);
if (screen_profile)
fiv_io_profile_free(screen_profile);
if (scaled)