summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDebarshi Ray <debarshir@gnome.org>2012-11-20 00:06:16 +0100
committerDebarshi Ray <debarshir@gnome.org>2013-09-02 16:12:46 +0200
commite2d47b30ae726f4d106f4f4bbad3c9acbe0e3fb4 (patch)
treea953fa044c7290733cf1f0d24479d91b23a80a11
parentd0762a94ebabb2d6651606a25a75079859eb1e9c (diff)
downloadgvfs-e2d47b30ae726f4d106f4f4bbad3c9acbe0e3fb4.tar.gz
daemon: Catch thumbnail files in large directory as well
When building the file attribute table info, use thumbnail paths in $XDG_CACHE_DIR/thumbnails/large in addition to $XDG_CACHE_DIR/thumbnails/normal. Failing to do this would cause an application that creates large thumbnails by default to never find any value for G_FILE_ATTRIBUTE_THUMBNAIL_PATH, with no G_FILE_ATTRIBUTE_THUMBNAILING_FAILED set, which might cause the application to either think thumbnailing is still in progress, or blindly requeue thumbnail operations in a loop. Large thumbnails are generally preferred, so we now default to the path of a large thumbnail (in case both are present). Fixes: https://bugzilla.gnome.org/688685
-rw-r--r--daemon/gvfsbackend.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/daemon/gvfsbackend.c b/daemon/gvfsbackend.c
index fc65d825..af45d1c7 100644
--- a/daemon/gvfsbackend.c
+++ b/daemon/gvfsbackend.c
@@ -527,7 +527,7 @@ get_thumbnail_attributes (const char *uri,
g_checksum_free (checksum);
filename = g_build_filename (g_get_user_cache_dir (),
- "thumbnails", "normal", basename,
+ "thumbnails", "large", basename,
NULL);
if (g_file_test (filename, G_FILE_TEST_IS_REGULAR))
@@ -536,13 +536,23 @@ get_thumbnail_attributes (const char *uri,
{
g_free (filename);
filename = g_build_filename (g_get_user_cache_dir (),
- "thumbnails", "fail",
- "gnome-thumbnail-factory",
- basename,
+ "thumbnails", "normal", basename,
NULL);
-
+
if (g_file_test (filename, G_FILE_TEST_IS_REGULAR))
- g_file_info_set_attribute_boolean (info, G_FILE_ATTRIBUTE_THUMBNAILING_FAILED, TRUE);
+ g_file_info_set_attribute_byte_string (info, G_FILE_ATTRIBUTE_THUMBNAIL_PATH, filename);
+ else
+ {
+ g_free (filename);
+ filename = g_build_filename (g_get_user_cache_dir (),
+ "thumbnails", "fail",
+ "gnome-thumbnail-factory",
+ basename,
+ NULL);
+
+ if (g_file_test (filename, G_FILE_TEST_IS_REGULAR))
+ g_file_info_set_attribute_boolean (info, G_FILE_ATTRIBUTE_THUMBNAILING_FAILED, TRUE);
+ }
}
g_free (basename);
g_free (filename);