diff options
author | Bastien Nocera <hadess@hadess.net> | 2020-12-17 12:14:30 +0100 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2020-12-17 12:30:05 +0100 |
commit | 8d91169fa60acf598a448caabcf776670de23eec (patch) | |
tree | 703730221065eaf27c1e06f2c0869ae232e9bbdc | |
parent | af2f724897c35167166436339faca1c9ca446684 (diff) | |
download | gnome-desktop-8d91169fa60acf598a448caabcf776670de23eec.tar.gz |
thumbnail: Factor out size to dirname and pixel size computation
This will make it easier to add new thumbnail sizes.
-rw-r--r-- | libgnome-desktop/gnome-desktop-thumbnail.c | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/libgnome-desktop/gnome-desktop-thumbnail.c b/libgnome-desktop/gnome-desktop-thumbnail.c index ad031c25..558ef868 100644 --- a/libgnome-desktop/gnome-desktop-thumbnail.c +++ b/libgnome-desktop/gnome-desktop-thumbnail.c @@ -303,6 +303,32 @@ get_thumbnailers_dirs (void) return g_once (&once_init, init_thumbnailers_dirs, NULL); } +static const char * +gnome_desktop_thumbnail_size_to_dirname (GnomeDesktopThumbnailSize size) +{ + switch (size) { + case GNOME_DESKTOP_THUMBNAIL_SIZE_NORMAL: + return "normal"; + case GNOME_DESKTOP_THUMBNAIL_SIZE_LARGE: + return "large"; + default: + g_assert_not_reached (); + } +} + +static guint +gnome_desktop_thumbnail_size_to_size (GnomeDesktopThumbnailSize size) +{ + switch (size) { + case GNOME_DESKTOP_THUMBNAIL_SIZE_NORMAL: + return 128; + case GNOME_DESKTOP_THUMBNAIL_SIZE_LARGE: + return 256; + default: + g_assert_not_reached (); + } +} + /* These should be called with the lock held */ static void gnome_desktop_thumbnail_factory_register_mime_types (GnomeDesktopThumbnailFactory *factory, @@ -761,7 +787,7 @@ thumbnail_path (const char *uri, file = thumbnail_filename (uri); path = g_build_filename (g_get_user_cache_dir (), "thumbnails", - size == GNOME_DESKTOP_THUMBNAIL_SIZE_LARGE ? "large" : "normal", + gnome_desktop_thumbnail_size_to_dirname (size), file, NULL); g_free (file); @@ -1047,10 +1073,7 @@ gnome_desktop_thumbnail_factory_generate_thumbnail (GnomeDesktopThumbnailFactory /* Doesn't access any volatile fields in factory, so it's threadsafe */ - size = 128; - if (factory->priv->size == GNOME_DESKTOP_THUMBNAIL_SIZE_LARGE) - size = 256; - + size = gnome_desktop_thumbnail_size_to_size (factory->priv->size); pixbuf = get_preview_thumbnail (uri, size); if (pixbuf != NULL) return pixbuf; |