summaryrefslogtreecommitdiff
path: root/libgnome-desktop
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2012-09-05 18:07:09 -0300
committerBastien Nocera <hadess@hadess.net>2014-11-18 19:36:33 +0100
commit57c18b88f2f4e0c80579ca6088af982b5a40fb06 (patch)
tree6519b4677883d2b50e57be86fe2974b46ce1bc63 /libgnome-desktop
parent8abaa436f7b498d4e08de034f37bafdd3d88be45 (diff)
downloadgnome-desktop-57c18b88f2f4e0c80579ca6088af982b5a40fb06.tar.gz
thumbnail: Clean up path generation code
Put the path calculation code in one spot. https://bugzilla.gnome.org/show_bug.cgi?id=684026
Diffstat (limited to 'libgnome-desktop')
-rw-r--r--libgnome-desktop/gnome-desktop-thumbnail.c162
1 files changed, 63 insertions, 99 deletions
diff --git a/libgnome-desktop/gnome-desktop-thumbnail.c b/libgnome-desktop/gnome-desktop-thumbnail.c
index e60a44cc..39123b0b 100644
--- a/libgnome-desktop/gnome-desktop-thumbnail.c
+++ b/libgnome-desktop/gnome-desktop-thumbnail.c
@@ -1018,6 +1018,59 @@ gnome_desktop_thumbnail_factory_new (GnomeDesktopThumbnailSize size)
return factory;
}
+static char *
+thumbnail_filename (const char *uri)
+{
+ GChecksum *checksum;
+ guint8 digest[16];
+ gsize digest_len = sizeof (digest);
+ char *file;
+
+ checksum = g_checksum_new (G_CHECKSUM_MD5);
+ g_checksum_update (checksum, (const guchar *) uri, strlen (uri));
+
+ g_checksum_get_digest (checksum, digest, &digest_len);
+ g_assert (digest_len == 16);
+
+ file = g_strconcat (g_checksum_get_string (checksum), ".png", NULL);
+
+ g_checksum_free (checksum);
+
+ return file;
+}
+
+static char *
+thumbnail_path (const char *uri,
+ GnomeDesktopThumbnailSize size)
+{
+ char *path, *file;
+
+ file = thumbnail_filename (uri);
+ path = g_build_filename (g_get_user_cache_dir (),
+ "thumbnails",
+ size == GNOME_DESKTOP_THUMBNAIL_SIZE_LARGE ? "large" : "normal",
+ NULL);
+ g_free (file);
+ return path;
+}
+
+static char *
+thumbnail_failed_path (const char *uri)
+{
+ char *path, *file;
+
+ file = thumbnail_filename (uri);
+ /* XXX: appname is only used for failed thumbnails. Is this a mistake? */
+ path = g_build_filename (g_get_user_cache_dir (),
+ "thumbnails",
+ "fail",
+ appname,
+ file,
+ NULL);
+ g_free (file);
+ return path;
+}
+
/**
* gnome_desktop_thumbnail_factory_lookup:
* @factory: a #GnomeDesktopThumbnailFactory
@@ -1038,31 +1091,15 @@ gnome_desktop_thumbnail_factory_lookup (GnomeDesktopThumbnailFactory *factory,
time_t mtime)
{
GnomeDesktopThumbnailFactoryPrivate *priv = factory->priv;
- char *path, *file;
- GChecksum *checksum;
- guint8 digest[16];
- gsize digest_len = sizeof (digest);
GdkPixbuf *pixbuf;
gboolean res;
+ char *path;
g_return_val_if_fail (uri != NULL, NULL);
res = FALSE;
- checksum = g_checksum_new (G_CHECKSUM_MD5);
- g_checksum_update (checksum, (const guchar *) uri, strlen (uri));
-
- g_checksum_get_digest (checksum, digest, &digest_len);
- g_assert (digest_len == 16);
-
- file = g_strconcat (g_checksum_get_string (checksum), ".png", NULL);
-
- path = g_build_filename (g_get_user_cache_dir (),
- "thumbnails",
- (priv->size == GNOME_DESKTOP_THUMBNAIL_SIZE_NORMAL)?"normal":"large",
- file,
- NULL);
- g_free (file);
+ path = thumbnail_path (uri, priv->size);
pixbuf = gdk_pixbuf_new_from_file (path, NULL);
if (pixbuf != NULL)
@@ -1071,13 +1108,11 @@ gnome_desktop_thumbnail_factory_lookup (GnomeDesktopThumbnailFactory *factory,
g_object_unref (pixbuf);
}
- g_checksum_free (checksum);
-
if (res)
return path;
g_free (path);
- return FALSE;
+ return NULL;
}
/**
@@ -1101,29 +1136,13 @@ gnome_desktop_thumbnail_factory_has_valid_failed_thumbnail (GnomeDesktopThumbnai
const char *uri,
time_t mtime)
{
- char *path, *file;
+ char *path;
GdkPixbuf *pixbuf;
gboolean res;
- GChecksum *checksum;
- guint8 digest[16];
- gsize digest_len = sizeof (digest);
-
- checksum = g_checksum_new (G_CHECKSUM_MD5);
- g_checksum_update (checksum, (const guchar *) uri, strlen (uri));
-
- g_checksum_get_digest (checksum, digest, &digest_len);
- g_assert (digest_len == 16);
res = FALSE;
- file = g_strconcat (g_checksum_get_string (checksum), ".png", NULL);
-
- path = g_build_filename (g_get_user_cache_dir (),
- "thumbnails/fail",
- appname,
- file,
- NULL);
- g_free (file);
+ path = thumbnail_failed_path (uri);
pixbuf = gdk_pixbuf_new_from_file (path, NULL);
g_free (path);
@@ -1134,8 +1153,6 @@ gnome_desktop_thumbnail_factory_has_valid_failed_thumbnail (GnomeDesktopThumbnai
g_object_unref (pixbuf);
}
- g_checksum_free (checksum);
-
return res;
}
@@ -1550,34 +1567,15 @@ gnome_desktop_thumbnail_factory_save_thumbnail (GnomeDesktopThumbnailFactory *fa
time_t original_mtime)
{
GnomeDesktopThumbnailFactoryPrivate *priv = factory->priv;
- char *path, *file;
+ char *path;
char *tmp_path;
const char *width, *height;
int tmp_fd;
char mtime_str[21];
gboolean saved_ok;
- GChecksum *checksum;
- guint8 digest[16];
- gsize digest_len = sizeof (digest);
GError *error;
- checksum = g_checksum_new (G_CHECKSUM_MD5);
- g_checksum_update (checksum, (const guchar *) uri, strlen (uri));
-
- g_checksum_get_digest (checksum, digest, &digest_len);
- g_assert (digest_len == 16);
-
- file = g_strconcat (g_checksum_get_string (checksum), ".png", NULL);
-
- path = g_build_filename (g_get_user_cache_dir (),
- "thumbnails",
- (priv->size == GNOME_DESKTOP_THUMBNAIL_SIZE_NORMAL)?"normal":"large",
- file,
- NULL);
-
- g_free (file);
-
- g_checksum_free (checksum);
+ path = thumbnail_path (uri, priv->size);
tmp_path = g_strconcat (path, ".XXXXXX", NULL);
@@ -1659,31 +1657,13 @@ gnome_desktop_thumbnail_factory_create_failed_thumbnail (GnomeDesktopThumbnailFa
const char *uri,
time_t mtime)
{
- char *path, *file;
+ char *path;
char *tmp_path;
int tmp_fd;
char mtime_str[21];
GdkPixbuf *pixbuf;
- GChecksum *checksum;
- guint8 digest[16];
- gsize digest_len = sizeof (digest);
- checksum = g_checksum_new (G_CHECKSUM_MD5);
- g_checksum_update (checksum, (const guchar *) uri, strlen (uri));
-
- g_checksum_get_digest (checksum, digest, &digest_len);
- g_assert (digest_len == 16);
-
- file = g_strconcat (g_checksum_get_string (checksum), ".png", NULL);
-
- path = g_build_filename (g_get_user_cache_dir (),
- "thumbnails/fail",
- appname,
- file,
- NULL);
- g_free (file);
-
- g_checksum_free (checksum);
+ path = thumbnail_failed_path (uri);
tmp_path = g_strconcat (path, ".XXXXXX", NULL);
@@ -1757,23 +1737,7 @@ char *
gnome_desktop_thumbnail_path_for_uri (const char *uri,
GnomeDesktopThumbnailSize size)
{
- char *md5;
- char *file;
- char *path;
-
- md5 = gnome_desktop_thumbnail_md5 (uri);
- file = g_strconcat (md5, ".png", NULL);
- g_free (md5);
-
- path = g_build_filename (g_get_user_cache_dir (),
- "thumbnails",
- (size == GNOME_DESKTOP_THUMBNAIL_SIZE_NORMAL)?"normal":"large",
- file,
- NULL);
-
- g_free (file);
-
- return path;
+ return thumbnail_path (uri, size);
}
/**