[gthumb] do not check if there is a thumbnail for thumbnail files
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] do not check if there is a thumbnail for thumbnail files
- Date: Sat, 5 Feb 2011 21:21:03 +0000 (UTC)
commit 587a76b76afe7877c1b593714ccf7284a8c52291
Author: Paolo Bacchilega <paobac src gnome org>
Date: Sat Feb 5 20:27:57 2011 +0100
do not check if there is a thumbnail for thumbnail files
[bug #635948]
gthumb/gth-file-list.c | 17 ++++++++++++++++-
gthumb/gth-file-store.c | 3 +--
gthumb/gth-thumb-loader.c | 38 +++++++++++++++++++++++++++-----------
3 files changed, 44 insertions(+), 14 deletions(-)
---
diff --git a/gthumb/gth-file-list.c b/gthumb/gth-file-list.c
index bf84db8..e04b8b8 100644
--- a/gthumb/gth-file-list.c
+++ b/gthumb/gth-file-list.c
@@ -990,11 +990,15 @@ gfl_add_files (GthFileList *file_list,
{
GthFileStore *file_store;
GList *scan;
+ char *cache_base_uri;
file_store = (GthFileStore*) gth_file_view_get_model (GTH_FILE_VIEW (file_list->priv->view));
+ cache_base_uri = g_strconcat (get_home_uri (), "/.thumbnails", NULL);
for (scan = files; scan; scan = scan->next) {
GthFileData *file_data = scan->data;
+ char *uri;
+ ThumbData *thumb_data;
GIcon *icon;
GdkPixbuf *pixbuf = NULL;
GString *metadata;
@@ -1005,9 +1009,16 @@ gfl_add_files (GthFileList *file_list,
if (g_hash_table_lookup (file_list->priv->thumb_data, file_data->file) != NULL)
continue;
+ uri = g_file_get_uri (file_data->file);
+
+ thumb_data = thumb_data_new ();
+ /* files in the .thumbnails directory are already thumbnails,
+ * set them as created. */
+ thumb_data->thumb_created = _g_uri_parent_of_uri (cache_base_uri, uri);
+
g_hash_table_insert (file_list->priv->thumb_data,
g_object_ref (file_data->file),
- thumb_data_new ());
+ thumb_data);
icon = g_file_info_get_icon (file_data->info);
pixbuf = gth_icon_cache_get_pixbuf (file_list->priv->icon_cache, icon);
@@ -1022,7 +1033,10 @@ gfl_add_files (GthFileList *file_list,
g_string_free (metadata, TRUE);
if (pixbuf != NULL)
g_object_unref (pixbuf);
+
+ g_free (uri);
}
+ g_free (cache_base_uri);
gth_file_store_exec_add (file_store);
_gth_file_list_update_pane (file_list);
@@ -1049,6 +1063,7 @@ gfl_delete_files (GthFileList *file_list,
GList *scan;
file_store = (GthFileStore*) gth_file_view_get_model (GTH_FILE_VIEW (file_list->priv->view));
+
for (scan = files; scan; scan = scan->next) {
GFile *file = scan->data;
GtkTreeIter iter;
diff --git a/gthumb/gth-file-store.c b/gthumb/gth-file-store.c
index 2072a74..834e1af 100644
--- a/gthumb/gth-file-store.c
+++ b/gthumb/gth-file-store.c
@@ -68,7 +68,6 @@ struct _GthFileStorePrivate
gboolean load_thumbs;
GthTest *filter;
GList *queue;
- int queue_size;
GthFileDataCompFunc cmp_func;
gboolean inverse_sort;
gboolean update_filter;
@@ -164,7 +163,6 @@ _gth_file_store_clear_queue (GthFileStore *file_store)
{
g_list_free (file_store->priv->queue);
file_store->priv->queue = NULL;
- file_store->priv->queue_size = 0;
}
@@ -1424,6 +1422,7 @@ gth_file_store_queue_add (GthFileStore *file_store,
_gth_file_row_set_metadata (row, metadata);
row->is_icon = is_icon;
row->checked = checked;
+
file_store->priv->queue = g_list_prepend (file_store->priv->queue, row);
}
diff --git a/gthumb/gth-thumb-loader.c b/gthumb/gth-thumb-loader.c
index 123ab7e..350724f 100644
--- a/gthumb/gth-thumb-loader.c
+++ b/gthumb/gth-thumb-loader.c
@@ -481,6 +481,21 @@ cache_image_ready_cb (GObject *source_object,
static gboolean
+is_a_cache_file (const char *uri)
+{
+ char *cache_base_uri;
+ gboolean result;
+
+ cache_base_uri = g_strconcat (get_home_uri (), "/.thumbnails", NULL);
+ result = _g_uri_parent_of_uri (cache_base_uri, uri);
+
+ g_free (cache_base_uri);
+
+ return result;
+}
+
+
+static gboolean
_gth_thumb_loader_save_to_cache (GthThumbLoader *self,
GthFileData *file_data,
GdkPixbuf *pixbuf)
@@ -496,18 +511,14 @@ _gth_thumb_loader_save_to_cache (GthThumbLoader *self,
uri = g_file_get_uri (file_data->file);
if (g_file_is_native (file_data->file)) {
- char *cache_base_uri;
/* Do not save thumbnails from the user's thumbnail directory,
or an endless loop of thumbnailing may be triggered. */
- cache_base_uri = g_strconcat (get_home_uri (), "/.thumbnails", NULL);
- if (_g_uri_parent_of_uri (cache_base_uri, uri)) {
- g_free (cache_base_uri);
+ if (is_a_cache_file (uri)) {
g_free (uri);
return FALSE;
}
- g_free (cache_base_uri);
}
cache_path = gnome_desktop_thumbnail_path_for_uri (uri, self->priv->thumb_size);
@@ -786,6 +797,7 @@ gth_thumb_loader_load (GthThumbLoader *self,
{
GSimpleAsyncResult *simple;
char *cache_path;
+ char *uri;
LoadData *load_data;
simple = g_simple_async_result_new (G_OBJECT (self),
@@ -794,11 +806,15 @@ gth_thumb_loader_load (GthThumbLoader *self,
gth_thumb_loader_load);
cache_path = NULL;
- if (self->priv->use_cache) {
- char *uri;
- time_t mtime;
- uri = g_file_get_uri (file_data->file);
+ uri = g_file_get_uri (file_data->file);
+
+ if (is_a_cache_file (uri)) {
+ cache_path = g_file_get_path (file_data->file);
+ }
+ else if (self->priv->use_cache) {
+ time_t mtime;
+
mtime = gth_file_data_get_mtime (file_data);
if (gnome_desktop_thumbnail_factory_has_valid_failed_thumbnail (self->priv->thumb_factory, uri, mtime)) {
@@ -815,10 +831,10 @@ gth_thumb_loader_load (GthThumbLoader *self,
}
cache_path = gnome_desktop_thumbnail_factory_lookup (self->priv->thumb_factory, uri, mtime);
-
- g_free (uri);
}
+ g_free (uri);
+
if ((cache_path == NULL)
&& (self->priv->max_file_size > 0)
&& (g_file_info_get_size (file_data->info) > self->priv->max_file_size))
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]