annotate src/thumb_standard.c @ 2916:ae6cdcd69d9f default tip

Merge with upstream/master.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 14 May 2019 11:46:50 +0300
parents ea4163f0c769
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1 /*
2350
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
2 * Copyright (C) 2006 John Ellis
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
3 * Copyright (C) 2008 - 2016 The Geeqie Team
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
4 *
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
5 * Author: John Ellis
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
6 *
2350
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
7 * This program is free software; you can redistribute it and/or modify
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
8 * it under the terms of the GNU General Public License as published by
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
10 * (at your option) any later version.
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
11 *
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
12 * This program is distributed in the hope that it will be useful,
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
15 * GNU General Public License for more details.
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
16 *
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
17 * You should have received a copy of the GNU General Public License along
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
18 * with this program; if not, write to the Free Software Foundation, Inc.,
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2185
diff changeset
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
20 */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
21
281
b1c2c2cf19d4 gqview.h -> main.h
Laurent Monin <geeqie@norz.org>
parents: 255
diff changeset
22 #include "main.h"
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
23 #include "thumb_standard.h"
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
24
2566
034d8772d6d8 Fix #500: Geeqie doesn’t use shared thumbnail folder
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
25 #include "cache.h"
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
26 #include "image-load.h"
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
27 #include "md5-util.h"
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
28 #include "pixbuf_util.h"
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
29 #include "ui_fileops.h"
838
fd3a200281f6 use FileData in thumb_loader
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 827
diff changeset
30 #include "filedata.h"
839
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 838
diff changeset
31 #include "exif.h"
1288
01a4a8674c8b use metadata_read_* functions where possible
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
32 #include "metadata.h"
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
33
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
34
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
35 /*
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
36 * This thumbnail caching implementation attempts to conform
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
37 * to the Thumbnail Managing Standard proposed on freedesktop.org
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
38 * The standard is documented here:
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
39 * http://triq.net/~jens/thumbnail-spec/index.html
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
40 * (why isn't it actually hosted on freedesktop.org?)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
41 *
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
42 * This code attempts to conform to version 0.7.0 of the standard.
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
43 *
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
44 * Notes:
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
45 * > Validation of the thumb's embedded uri is a simple strcmp between our
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
46 * version of the escaped uri and the thumb's escaped uri. But not all uri
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
47 * escape functions escape the same set of chars, comparing the unescaped
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
48 * versions may be more accurate.
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
49 * > Only Thumb::URI and Thumb::MTime are stored in a thumb at this time.
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
50 * Storing the Size, Width, Height should probably be implemented.
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
51 */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
52
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
53
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
54 #define THUMB_SIZE_NORMAL 128
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
55 #define THUMB_SIZE_LARGE 256
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
56
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
57 #define THUMB_MARKER_URI "tEXt::Thumb::URI"
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
58 #define THUMB_MARKER_MTIME "tEXt::Thumb::MTime"
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
59 #define THUMB_MARKER_SIZE "tEXt::Thumb::Size"
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
60 #define THUMB_MARKER_WIDTH "tEXt::Thumb::Image::Width"
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
61 #define THUMB_MARKER_HEIGHT "tEXt::Thumb::Image::Height"
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
62 #define THUMB_MARKER_APP "tEXt::Software"
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
63
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
64 #define THUMB_PERMS_FOLDER 0700
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
65 #define THUMB_PERMS_THUMB 0600
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
66
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
67
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
68
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
69 /*
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
70 *-----------------------------------------------------------------------------
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
71 * thumbnail loader
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
72 *-----------------------------------------------------------------------------
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
73 */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
74
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
75
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
76 static void thumb_loader_std_error_cb(ImageLoader *il, gpointer data);
1009
5847765e8189 fixed thumbnail loader for the new raw preview interface
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 972
diff changeset
77 static gint thumb_loader_std_setup(ThumbLoaderStd *tl, FileData *fd);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
78
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
79
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
80 ThumbLoaderStd *thumb_loader_std_new(gint width, gint height)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
81 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
82 ThumbLoaderStd *tl;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
83
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
84 tl = g_new0(ThumbLoaderStd, 1);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
85
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
86 tl->standard_loader = TRUE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
87 tl->requested_width = width;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
88 tl->requested_height = height;
333
1ebdf8fb2c1a Rename thumbnails related options.
Laurent Monin <geeqie@norz.org>
parents: 318
diff changeset
89 tl->cache_enable = options->thumbnails.enable_caching;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
90
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
91 return tl;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
92 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
93
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
94 void thumb_loader_std_set_callbacks(ThumbLoaderStd *tl,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
95 ThumbLoaderStdFunc func_done,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
96 ThumbLoaderStdFunc func_error,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
97 ThumbLoaderStdFunc func_progress,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
98 gpointer data)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
99 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
100 if (!tl) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
101
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
102 tl->func_done = func_done;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
103 tl->func_error = func_error;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
104 tl->func_progress = func_progress;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
105 tl->data = data;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
106 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
107
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
108 static void thumb_loader_std_reset(ThumbLoaderStd *tl)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
109 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
110 image_loader_free(tl->il);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
111 tl->il = NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
112
838
fd3a200281f6 use FileData in thumb_loader
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 827
diff changeset
113 file_data_unref(tl->fd);
fd3a200281f6 use FileData in thumb_loader
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 827
diff changeset
114 tl->fd = NULL;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
115
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
116 g_free(tl->thumb_path);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
117 tl->thumb_path = NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
118
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
119 g_free(tl->thumb_uri);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
120 tl->thumb_uri = NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
121 tl->local_uri = NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
122
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
123 tl->thumb_path_local = FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
124
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
125 tl->cache_hit = FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
126
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
127 tl->source_mtime = 0;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
128 tl->source_size = 0;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
129 tl->source_mode = 0;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
130
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
131 tl->progress = 0.0;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
132 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
133
1446
12c4e43e82c1 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
134 static gchar *thumb_std_cache_path(const gchar *path, const gchar *uri, gboolean local,
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
135 const gchar *cache_subfolder)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
136 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
137 gchar *result = NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
138 gchar *md5_text;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
139 guchar digest[16];
716
98293de3c9b4 thumb_std_cache_path(): use g_build_filename() and simplify.
Laurent Monin <geeqie@norz.org>
parents: 671
diff changeset
140 gchar *name;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
141
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
142 if (!path || !uri || !cache_subfolder) return NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
143
716
98293de3c9b4 thumb_std_cache_path(): use g_build_filename() and simplify.
Laurent Monin <geeqie@norz.org>
parents: 671
diff changeset
144 md5_get_digest((guchar *)uri, strlen(uri), digest);
98293de3c9b4 thumb_std_cache_path(): use g_build_filename() and simplify.
Laurent Monin <geeqie@norz.org>
parents: 671
diff changeset
145 md5_text = md5_digest_to_text(digest);
98293de3c9b4 thumb_std_cache_path(): use g_build_filename() and simplify.
Laurent Monin <geeqie@norz.org>
parents: 671
diff changeset
146
98293de3c9b4 thumb_std_cache_path(): use g_build_filename() and simplify.
Laurent Monin <geeqie@norz.org>
parents: 671
diff changeset
147 if (!md5_text) return NULL;
98293de3c9b4 thumb_std_cache_path(): use g_build_filename() and simplify.
Laurent Monin <geeqie@norz.org>
parents: 671
diff changeset
148
98293de3c9b4 thumb_std_cache_path(): use g_build_filename() and simplify.
Laurent Monin <geeqie@norz.org>
parents: 671
diff changeset
149 name = g_strconcat(md5_text, THUMB_NAME_EXTENSION, NULL);
98293de3c9b4 thumb_std_cache_path(): use g_build_filename() and simplify.
Laurent Monin <geeqie@norz.org>
parents: 671
diff changeset
150
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
151 if (local)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
152 {
716
98293de3c9b4 thumb_std_cache_path(): use g_build_filename() and simplify.
Laurent Monin <geeqie@norz.org>
parents: 671
diff changeset
153 gchar *base = remove_level_from_path(path);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
154
716
98293de3c9b4 thumb_std_cache_path(): use g_build_filename() and simplify.
Laurent Monin <geeqie@norz.org>
parents: 671
diff changeset
155 result = g_build_filename(base, THUMB_FOLDER_LOCAL, cache_subfolder, name, NULL);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
156 g_free(base);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
157 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
158 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
159 {
2566
034d8772d6d8 Fix #500: Geeqie doesn’t use shared thumbnail folder
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
160 result = g_build_filename(get_thumbnails_standard_cache_dir(),
034d8772d6d8 Fix #500: Geeqie doesn’t use shared thumbnail folder
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
161 cache_subfolder, name, NULL);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
162 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
163
716
98293de3c9b4 thumb_std_cache_path(): use g_build_filename() and simplify.
Laurent Monin <geeqie@norz.org>
parents: 671
diff changeset
164 g_free(name);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
165 g_free(md5_text);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
166
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
167 return result;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
168 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
169
1446
12c4e43e82c1 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
170 static gchar *thumb_loader_std_cache_path(ThumbLoaderStd *tl, gboolean local, GdkPixbuf *pixbuf, gboolean fail)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
171 {
436
a907e03a85f7 Rename inappropriate folder_size to folder.
Laurent Monin <geeqie@norz.org>
parents: 333
diff changeset
172 const gchar *folder;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
173 gint w, h;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
174
838
fd3a200281f6 use FileData in thumb_loader
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 827
diff changeset
175 if (!tl->fd || !tl->thumb_uri) return NULL;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
176
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
177 if (pixbuf)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
178 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
179 w = gdk_pixbuf_get_width(pixbuf);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
180 h = gdk_pixbuf_get_height(pixbuf);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
181 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
182 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
183 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
184 w = tl->requested_width;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
185 h = tl->requested_height;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
186 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
187
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
188 if (fail)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
189 {
436
a907e03a85f7 Rename inappropriate folder_size to folder.
Laurent Monin <geeqie@norz.org>
parents: 333
diff changeset
190 folder = THUMB_FOLDER_FAIL;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
191 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
192 else if (w > THUMB_SIZE_NORMAL || h > THUMB_SIZE_NORMAL)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
193 {
436
a907e03a85f7 Rename inappropriate folder_size to folder.
Laurent Monin <geeqie@norz.org>
parents: 333
diff changeset
194 folder = THUMB_FOLDER_LARGE;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
195 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
196 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
197 {
436
a907e03a85f7 Rename inappropriate folder_size to folder.
Laurent Monin <geeqie@norz.org>
parents: 333
diff changeset
198 folder = THUMB_FOLDER_NORMAL;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
199 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
200
838
fd3a200281f6 use FileData in thumb_loader
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 827
diff changeset
201 return thumb_std_cache_path(tl->fd->path,
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
202 (local) ? tl->local_uri : tl->thumb_uri,
436
a907e03a85f7 Rename inappropriate folder_size to folder.
Laurent Monin <geeqie@norz.org>
parents: 333
diff changeset
203 local, folder);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
204 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
205
1446
12c4e43e82c1 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
206 static gboolean thumb_loader_std_fail_check(ThumbLoaderStd *tl)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
207 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
208 gchar *fail_path;
1437
cc423d10b73e gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1365
diff changeset
209 gboolean result = FALSE;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
210
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
211 fail_path = thumb_loader_std_cache_path(tl, FALSE, NULL, TRUE);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
212 if (isfile(fail_path))
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
213 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
214 GdkPixbuf *pixbuf;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
215
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
216 if (tl->cache_retry)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
217 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
218 pixbuf = NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
219 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
220 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
221 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
222 gchar *pathl;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
223
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
224 pathl = path_from_utf8(fail_path);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
225 pixbuf = gdk_pixbuf_new_from_file(pathl, NULL);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
226 g_free(pathl);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
227 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
228
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
229 if (pixbuf)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
230 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
231 const gchar *mtime_str;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
232
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
233 mtime_str = gdk_pixbuf_get_option(pixbuf, THUMB_MARKER_MTIME);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
234 if (mtime_str && strtol(mtime_str, NULL, 10) == tl->source_mtime)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
235 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
236 result = TRUE;
838
fd3a200281f6 use FileData in thumb_loader
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 827
diff changeset
237 DEBUG_1("thumb fail valid: %s", tl->fd->path);
506
03d66738b225 Handle the newline in DEBUG_N() macro instead of adding one
Laurent Monin <geeqie@norz.org>
parents: 495
diff changeset
238 DEBUG_1(" thumb: %s", fail_path);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
239 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
240
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
241 g_object_unref(G_OBJECT(pixbuf));
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
242 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
243
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
244 if (!result) unlink_file(fail_path);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
245 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
246 g_free(fail_path);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
247
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
248 return result;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
249 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
250
1446
12c4e43e82c1 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
251 static gboolean thumb_loader_std_validate(ThumbLoaderStd *tl, GdkPixbuf *pixbuf)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
252 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
253 const gchar *valid_uri;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
254 const gchar *uri;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
255 const gchar *mtime_str;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
256 time_t mtime;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
257 gint w, h;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
258
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
259 if (!pixbuf) return FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
260
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
261 w = gdk_pixbuf_get_width(pixbuf);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
262 h = gdk_pixbuf_get_height(pixbuf);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
263
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
264 if (w != THUMB_SIZE_NORMAL && w != THUMB_SIZE_LARGE &&
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
265 h != THUMB_SIZE_NORMAL && h != THUMB_SIZE_LARGE) return FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
266
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
267 valid_uri = (tl->thumb_path_local) ? tl->local_uri : tl->thumb_uri;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
268
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
269 uri = gdk_pixbuf_get_option(pixbuf, THUMB_MARKER_URI);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
270 mtime_str = gdk_pixbuf_get_option(pixbuf, THUMB_MARKER_MTIME);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
271
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
272 if (!mtime_str || !uri || !valid_uri) return FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
273 if (strcmp(uri, valid_uri) != 0) return FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
274
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
275 mtime = strtol(mtime_str, NULL, 10);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
276 if (tl->source_mtime != mtime) return FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
277
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
278 return TRUE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
279 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
280
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
281 static void thumb_loader_std_save(ThumbLoaderStd *tl, GdkPixbuf *pixbuf)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
282 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
283 gchar *base_path;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
284 gchar *tmp_path;
1446
12c4e43e82c1 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
285 gboolean fail;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
286
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
287 if (!tl->cache_enable || tl->cache_hit) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
288 if (tl->thumb_path) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
289
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
290 if (!pixbuf)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
291 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
292 /* local failures are not stored */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
293 if (tl->cache_local) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
294
436
a907e03a85f7 Rename inappropriate folder_size to folder.
Laurent Monin <geeqie@norz.org>
parents: 333
diff changeset
295 pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, 1, 1);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
296 fail = TRUE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
297 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
298 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
299 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
300 g_object_ref(G_OBJECT(pixbuf));
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
301 fail = FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
302 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
303
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
304 tl->thumb_path = thumb_loader_std_cache_path(tl, tl->cache_local, pixbuf, fail);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
305 if (!tl->thumb_path)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
306 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
307 g_object_unref(G_OBJECT(pixbuf));
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
308 return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
309 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
310 tl->thumb_path_local = tl->cache_local;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
311
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
312 /* create thumbnail dir if needed */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
313 base_path = remove_level_from_path(tl->thumb_path);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
314 if (tl->cache_local)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
315 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
316 if (!isdir(base_path))
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
317 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
318 struct stat st;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
319 gchar *source_base;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
320
838
fd3a200281f6 use FileData in thumb_loader
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 827
diff changeset
321 source_base = remove_level_from_path(tl->fd->path);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
322 if (stat_utf8(source_base, &st))
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
323 {
1148
db3cdb2b9681 Replace cache_ensure_dir_exists() by new recursive_mkdir_if_not_exists().
Laurent Monin <geeqie@norz.org>
parents: 1055
diff changeset
324 recursive_mkdir_if_not_exists(base_path, st.st_mode);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
325 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
326 g_free(source_base);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
327 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
328 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
329 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
330 {
1148
db3cdb2b9681 Replace cache_ensure_dir_exists() by new recursive_mkdir_if_not_exists().
Laurent Monin <geeqie@norz.org>
parents: 1055
diff changeset
331 recursive_mkdir_if_not_exists(base_path, THUMB_PERMS_FOLDER);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
332 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
333 g_free(base_path);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
334
838
fd3a200281f6 use FileData in thumb_loader
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 827
diff changeset
335 DEBUG_1("thumb saving: %s", tl->fd->path);
506
03d66738b225 Handle the newline in DEBUG_N() macro instead of adding one
Laurent Monin <geeqie@norz.org>
parents: 495
diff changeset
336 DEBUG_1(" saved: %s", tl->thumb_path);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
337
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
338 /* save thumb, using a temp file then renaming into place */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
339 tmp_path = unique_filename(tl->thumb_path, ".tmp", "_", 2);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
340 if (tmp_path)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
341 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
342 const gchar *mark_uri;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
343 gchar *mark_app;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
344 gchar *mark_mtime;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
345 gchar *pathl;
1446
12c4e43e82c1 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
346 gboolean success;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
347
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
348 mark_uri = (tl->cache_local) ? tl->local_uri :tl->thumb_uri;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
349
288
e675073bcca0 Replace occurences of Geeqie / geeqie by constants defined in main.h.
Laurent Monin <geeqie@norz.org>
parents: 281
diff changeset
350 mark_app = g_strdup_printf("%s %s", GQ_APPNAME, VERSION);
2785
532fc301c5ba Fix #620: Fix build on x32
Andreas Rönnquist <>
parents: 2715
diff changeset
351 mark_mtime = g_strdup_printf("%llu", (unsigned long long)tl->source_mtime);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
352 pathl = path_from_utf8(tmp_path);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
353 success = gdk_pixbuf_save(pixbuf, pathl, "png", NULL,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
354 THUMB_MARKER_URI, mark_uri,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
355 THUMB_MARKER_MTIME, mark_mtime,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
356 THUMB_MARKER_APP, mark_app,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
357 NULL);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
358 if (success)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
359 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
360 chmod(pathl, (tl->cache_local) ? tl->source_mode : THUMB_PERMS_THUMB);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
361 success = rename_file(tmp_path, tl->thumb_path);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
362 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
363
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
364 g_free(pathl);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
365
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
366 g_free(mark_mtime);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
367 g_free(mark_app);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
368
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
369 g_free(tmp_path);
506
03d66738b225 Handle the newline in DEBUG_N() macro instead of adding one
Laurent Monin <geeqie@norz.org>
parents: 495
diff changeset
370 if (!success)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
371 {
838
fd3a200281f6 use FileData in thumb_loader
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 827
diff changeset
372 DEBUG_1("thumb save failed: %s", tl->fd->path);
506
03d66738b225 Handle the newline in DEBUG_N() macro instead of adding one
Laurent Monin <geeqie@norz.org>
parents: 495
diff changeset
373 DEBUG_1(" thumb: %s", tl->thumb_path);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
374 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
375
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
376 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
377
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
378 g_object_unref(G_OBJECT(pixbuf));
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
379 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
380
876
0348bca8bb71 set fallback thumbnail pixbuf only if the loading really fails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 864
diff changeset
381 static void thumb_loader_std_set_fallback(ThumbLoaderStd *tl)
0348bca8bb71 set fallback thumbnail pixbuf only if the loading really fails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 864
diff changeset
382 {
0348bca8bb71 set fallback thumbnail pixbuf only if the loading really fails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 864
diff changeset
383 if (tl->fd->thumb_pixbuf) g_object_unref(tl->fd->thumb_pixbuf);
0348bca8bb71 set fallback thumbnail pixbuf only if the loading really fails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 864
diff changeset
384 tl->fd->thumb_pixbuf = pixbuf_fallback(tl->fd, tl->requested_width, tl->requested_height);
0348bca8bb71 set fallback thumbnail pixbuf only if the loading really fails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 864
diff changeset
385 }
0348bca8bb71 set fallback thumbnail pixbuf only if the loading really fails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 864
diff changeset
386
1446
12c4e43e82c1 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
387 static GdkPixbuf *thumb_loader_std_finish(ThumbLoaderStd *tl, GdkPixbuf *pixbuf, gboolean shrunk)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
388 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
389 GdkPixbuf *pixbuf_thumb = NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
390 GdkPixbuf *result;
839
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 838
diff changeset
391 GdkPixbuf *rotated = NULL;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
392 gint sw, sh;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
393
839
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 838
diff changeset
394
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 838
diff changeset
395 if (!tl->cache_hit && options->image.exif_rotate_enable)
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 838
diff changeset
396 {
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 838
diff changeset
397 if (!tl->fd->exif_orientation)
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 838
diff changeset
398 {
1567
ef3ca18df43f added an option to write image orientation to the metadata
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1523
diff changeset
399 tl->fd->exif_orientation = metadata_read_int(tl->fd, ORIENTATION_KEY, EXIF_ORIENTATION_TOP_LEFT);
839
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 838
diff changeset
400 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
401
842
fee57526f434 do not allocate new buffer for thumbnails with correct orientation
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 841
diff changeset
402 if (tl->fd->exif_orientation != EXIF_ORIENTATION_TOP_LEFT)
fee57526f434 do not allocate new buffer for thumbnails with correct orientation
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 841
diff changeset
403 {
fee57526f434 do not allocate new buffer for thumbnails with correct orientation
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 841
diff changeset
404 rotated = pixbuf_apply_orientation(pixbuf, tl->fd->exif_orientation);
fee57526f434 do not allocate new buffer for thumbnails with correct orientation
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 841
diff changeset
405 pixbuf = rotated;
fee57526f434 do not allocate new buffer for thumbnails with correct orientation
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 841
diff changeset
406 }
839
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 838
diff changeset
407 }
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 838
diff changeset
408
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
409 sw = gdk_pixbuf_get_width(pixbuf);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
410 sh = gdk_pixbuf_get_height(pixbuf);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
411
40
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
412 if (tl->cache_enable)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
413 {
40
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
414 if (!tl->cache_hit)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
415 {
40
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
416 gint cache_w, cache_h;
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
417
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
418 if (tl->requested_width > THUMB_SIZE_NORMAL || tl->requested_height > THUMB_SIZE_NORMAL)
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
419 {
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
420 cache_w = cache_h = THUMB_SIZE_LARGE;
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
421 }
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
422 else
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
423 {
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
424 cache_w = cache_h = THUMB_SIZE_NORMAL;
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
425 }
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
426
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
427 if (sw > cache_w || sh > cache_h || shrunk)
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
428 {
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
429 gint thumb_w, thumb_h;
1762
e7b6b1933b26 do not cache incomplete thumbnails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1721
diff changeset
430 struct stat st;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
431
864
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 845
diff changeset
432 if (pixbuf_scale_aspect(cache_w, cache_h, sw, sh,
40
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
433 &thumb_w, &thumb_h))
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
434 {
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
435 pixbuf_thumb = gdk_pixbuf_scale_simple(pixbuf, thumb_w, thumb_h,
333
1ebdf8fb2c1a Rename thumbnails related options.
Laurent Monin <geeqie@norz.org>
parents: 318
diff changeset
436 (GdkInterpType)options->thumbnails.quality);
40
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
437 }
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
438 else
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
439 {
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
440 pixbuf_thumb = pixbuf;
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
441 g_object_ref(G_OBJECT(pixbuf_thumb));
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
442 }
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
443
1762
e7b6b1933b26 do not cache incomplete thumbnails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1721
diff changeset
444 /* do not save the thumbnail if the source file has changed meanwhile -
e7b6b1933b26 do not cache incomplete thumbnails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1721
diff changeset
445 the thumbnail is most probably broken */
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2021
diff changeset
446 if (stat_utf8(tl->fd->path, &st) &&
1762
e7b6b1933b26 do not cache incomplete thumbnails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1721
diff changeset
447 tl->source_mtime == st.st_mtime &&
e7b6b1933b26 do not cache incomplete thumbnails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1721
diff changeset
448 tl->source_size == st.st_size)
e7b6b1933b26 do not cache incomplete thumbnails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1721
diff changeset
449 {
e7b6b1933b26 do not cache incomplete thumbnails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1721
diff changeset
450 thumb_loader_std_save(tl, pixbuf_thumb);
e7b6b1933b26 do not cache incomplete thumbnails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1721
diff changeset
451 }
40
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
452 }
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
453 }
40
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
454 else if (tl->cache_hit &&
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
455 tl->cache_local && !tl->thumb_path_local)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
456 {
40
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
457 /* A local cache save was requested, but a valid thumb is in $HOME,
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
458 * so specifically save as a local thumbnail.
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
459 */
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
460 g_free(tl->thumb_path);
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
461 tl->thumb_path = NULL;
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
462
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
463 tl->cache_hit = FALSE;
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
464
838
fd3a200281f6 use FileData in thumb_loader
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 827
diff changeset
465 DEBUG_1("thumb copied: %s", tl->fd->path);
40
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
466
d561a5869d5f Sat Apr 16 12:29:42 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 14
diff changeset
467 thumb_loader_std_save(tl, pixbuf);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
468 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
469 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
470
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
471 if (sw <= tl->requested_width && sh <= tl->requested_height)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
472 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
473 result = pixbuf;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
474 g_object_ref(result);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
475 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
476 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
477 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
478 gint thumb_w, thumb_h;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
479
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
480 if (pixbuf_thumb)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
481 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
482 pixbuf = pixbuf_thumb;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
483 sw = gdk_pixbuf_get_width(pixbuf);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
484 sh = gdk_pixbuf_get_height(pixbuf);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
485 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
486
864
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 845
diff changeset
487 if (pixbuf_scale_aspect(tl->requested_width, tl->requested_height, sw, sh,
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
488 &thumb_w, &thumb_h))
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
489 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
490 result = gdk_pixbuf_scale_simple(pixbuf, thumb_w, thumb_h,
333
1ebdf8fb2c1a Rename thumbnails related options.
Laurent Monin <geeqie@norz.org>
parents: 318
diff changeset
491 (GdkInterpType)options->thumbnails.quality);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
492 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
493 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
494 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
495 result = pixbuf;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
496 g_object_ref(result);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
497 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
498 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
499
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
500 if (pixbuf_thumb) g_object_unref(pixbuf_thumb);
839
74af80c4c972 rotate thumbnails by exif
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 838
diff changeset
501 if (rotated) g_object_unref(rotated);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
502
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
503 return result;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
504 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
505
1446
12c4e43e82c1 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
506 static gboolean thumb_loader_std_next_source(ThumbLoaderStd *tl, gboolean remove_broken)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
507 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
508 image_loader_free(tl->il);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
509 tl->il = NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
510
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
511 if (tl->thumb_path)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
512 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
513 if (!tl->thumb_path_local && remove_broken)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
514 {
506
03d66738b225 Handle the newline in DEBUG_N() macro instead of adding one
Laurent Monin <geeqie@norz.org>
parents: 495
diff changeset
515 DEBUG_1("thumb broken, unlinking: %s", tl->thumb_path);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
516 unlink_file(tl->thumb_path);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
517 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
518
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
519 g_free(tl->thumb_path);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
520 tl->thumb_path = NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
521
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
522 if (!tl->thumb_path_local)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
523 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
524 tl->thumb_path = thumb_loader_std_cache_path(tl, TRUE, NULL, FALSE);
1927
d1a5b8633919 always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1802
diff changeset
525 if (isfile(tl->thumb_path))
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
526 {
1927
d1a5b8633919 always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1802
diff changeset
527 FileData *fd = file_data_new_no_grouping(tl->thumb_path);
d1a5b8633919 always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1802
diff changeset
528 if (thumb_loader_std_setup(tl, fd))
d1a5b8633919 always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1802
diff changeset
529 {
d1a5b8633919 always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1802
diff changeset
530 file_data_unref(fd);
d1a5b8633919 always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1802
diff changeset
531 tl->thumb_path_local = TRUE;
d1a5b8633919 always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1802
diff changeset
532 return TRUE;
d1a5b8633919 always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1802
diff changeset
533 }
d1a5b8633919 always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1802
diff changeset
534 file_data_unref(fd);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
535 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
536
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
537 g_free(tl->thumb_path);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
538 tl->thumb_path = NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
539 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
540
1009
5847765e8189 fixed thumbnail loader for the new raw preview interface
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 972
diff changeset
541 if (thumb_loader_std_setup(tl, tl->fd)) return TRUE;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
542 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
543
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
544 thumb_loader_std_save(tl, NULL);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
545 return FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
546 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
547
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
548 static void thumb_loader_std_done_cb(ImageLoader *il, gpointer data)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
549 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
550 ThumbLoaderStd *tl = data;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
551 GdkPixbuf *pixbuf;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
552
881
eb2e2dac4517 Prevent segfault in certain conditions when displaying debug message.
Laurent Monin <geeqie@norz.org>
parents: 876
diff changeset
553 DEBUG_1("thumb image done: %s", tl->fd ? tl->fd->path : "???");
1011
66037ee8b4d6 do not access image_loader directly
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1009
diff changeset
554 DEBUG_1(" from: %s", image_loader_get_fd(tl->il)->path);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
555
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
556 pixbuf = image_loader_get_pixbuf(tl->il);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
557 if (!pixbuf)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
558 {
506
03d66738b225 Handle the newline in DEBUG_N() macro instead of adding one
Laurent Monin <geeqie@norz.org>
parents: 495
diff changeset
559 DEBUG_1("...but no pixbuf");
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
560 thumb_loader_std_error_cb(il, data);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
561 return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
562 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
563
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
564 if (tl->thumb_path && !thumb_loader_std_validate(tl, pixbuf))
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
565 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
566 if (thumb_loader_std_next_source(tl, TRUE)) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
567
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
568 if (tl->func_error) tl->func_error(tl, tl->data);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
569 return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
570 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
571
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
572 tl->cache_hit = (tl->thumb_path != NULL);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
573
838
fd3a200281f6 use FileData in thumb_loader
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 827
diff changeset
574 if (tl->fd)
fd3a200281f6 use FileData in thumb_loader
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 827
diff changeset
575 {
845
06f57cd7f595 renamed fd->pixbuf to fd->thumb_pixbuf
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 844
diff changeset
576 if (tl->fd->thumb_pixbuf) g_object_unref(tl->fd->thumb_pixbuf);
1011
66037ee8b4d6 do not access image_loader directly
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1009
diff changeset
577 tl->fd->thumb_pixbuf = thumb_loader_std_finish(tl, pixbuf, image_loader_get_shrunk(il));
838
fd3a200281f6 use FileData in thumb_loader
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 827
diff changeset
578 }
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
579
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
580 if (tl->func_done) tl->func_done(tl, tl->data);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
581 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
582
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
583 static void thumb_loader_std_error_cb(ImageLoader *il, gpointer data)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
584 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
585 ThumbLoaderStd *tl = data;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
586
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
587 /* if at least some of the image is available, go to done */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
588 if (image_loader_get_pixbuf(tl->il) != NULL)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
589 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
590 thumb_loader_std_done_cb(il, data);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
591 return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
592 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
593
838
fd3a200281f6 use FileData in thumb_loader
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 827
diff changeset
594 DEBUG_1("thumb image error: %s", tl->fd->path);
1011
66037ee8b4d6 do not access image_loader directly
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1009
diff changeset
595 DEBUG_1(" from: %s", image_loader_get_fd(tl->il)->path);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
596
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
597 if (thumb_loader_std_next_source(tl, TRUE)) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
598
876
0348bca8bb71 set fallback thumbnail pixbuf only if the loading really fails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 864
diff changeset
599 thumb_loader_std_set_fallback(tl);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
600
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
601 if (tl->func_error) tl->func_error(tl, tl->data);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
602 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
603
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
604 static void thumb_loader_std_progress_cb(ImageLoader *il, gdouble percent, gpointer data)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
605 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
606 ThumbLoaderStd *tl = data;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
607
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
608 tl->progress = (gdouble)percent;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
609
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
610 if (tl->func_progress) tl->func_progress(tl, tl->data);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
611 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
612
1446
12c4e43e82c1 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
613 static gboolean thumb_loader_std_setup(ThumbLoaderStd *tl, FileData *fd)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
614 {
1009
5847765e8189 fixed thumbnail loader for the new raw preview interface
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 972
diff changeset
615 tl->il = image_loader_new(fd);
1036
e796b3d7cd87 load thumbnails with lower priority
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1012
diff changeset
616 image_loader_set_priority(tl->il, G_PRIORITY_LOW);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
617
1521
ad1d92c39b30 unconditionally enable fast jpeg thumbnailing
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1446
diff changeset
618 /* this will speed up jpegs by up to 3x in some cases */
ad1d92c39b30 unconditionally enable fast jpeg thumbnailing
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1446
diff changeset
619 if (tl->requested_width <= THUMB_SIZE_NORMAL &&
ad1d92c39b30 unconditionally enable fast jpeg thumbnailing
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1446
diff changeset
620 tl->requested_height <= THUMB_SIZE_NORMAL)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
621 {
1521
ad1d92c39b30 unconditionally enable fast jpeg thumbnailing
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1446
diff changeset
622 image_loader_set_requested_size(tl->il, THUMB_SIZE_NORMAL, THUMB_SIZE_NORMAL);
ad1d92c39b30 unconditionally enable fast jpeg thumbnailing
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1446
diff changeset
623 }
ad1d92c39b30 unconditionally enable fast jpeg thumbnailing
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1446
diff changeset
624 else
ad1d92c39b30 unconditionally enable fast jpeg thumbnailing
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1446
diff changeset
625 {
ad1d92c39b30 unconditionally enable fast jpeg thumbnailing
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1446
diff changeset
626 image_loader_set_requested_size(tl->il, THUMB_SIZE_LARGE, THUMB_SIZE_LARGE);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
627 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
628
1346
b3378273091e No space between function name and first parenthesis, it eases greping (see CODING).
Laurent Monin <geeqie@norz.org>
parents: 1288
diff changeset
629 g_signal_connect(G_OBJECT(tl->il), "error", (GCallback)thumb_loader_std_error_cb, tl);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
630 if (tl->func_progress)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
631 {
1346
b3378273091e No space between function name and first parenthesis, it eases greping (see CODING).
Laurent Monin <geeqie@norz.org>
parents: 1288
diff changeset
632 g_signal_connect(G_OBJECT(tl->il), "percent", (GCallback)thumb_loader_std_progress_cb, tl);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
633 }
1346
b3378273091e No space between function name and first parenthesis, it eases greping (see CODING).
Laurent Monin <geeqie@norz.org>
parents: 1288
diff changeset
634 g_signal_connect(G_OBJECT(tl->il), "done", (GCallback)thumb_loader_std_done_cb, tl);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
635
1012
409b52dfe683 converted image loader to a GObject and use signals for notification
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1011
diff changeset
636 if (image_loader_start(tl->il))
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
637 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
638 return TRUE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
639 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
640
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
641 image_loader_free(tl->il);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
642 tl->il = NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
643 return FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
644 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
645
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
646 /*
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
647 * Note: Currently local_cache only specifies where to save a _new_ thumb, if
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
648 * a valid existing thumb is found anywhere the local thumb will not be created.
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
649 */
1446
12c4e43e82c1 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
650 void thumb_loader_std_set_cache(ThumbLoaderStd *tl, gboolean enable_cache, gboolean local, gboolean retry_failed)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
651 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
652 if (!tl) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
653
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
654 tl->cache_enable = enable_cache;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
655 tl->cache_local = local;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
656 tl->cache_retry = retry_failed;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
657 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
658
1446
12c4e43e82c1 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
659 gboolean thumb_loader_std_start(ThumbLoaderStd *tl, FileData *fd)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
660 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
661 static gchar *thumb_cache = NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
662 struct stat st;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
663
838
fd3a200281f6 use FileData in thumb_loader
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 827
diff changeset
664 if (!tl || !fd) return FALSE;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
665
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
666 thumb_loader_std_reset(tl);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
667
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
668
838
fd3a200281f6 use FileData in thumb_loader
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 827
diff changeset
669 tl->fd = file_data_ref(fd);
2799
ea4163f0c769 Ref #332: include pdf-view
Colin Clark <colin.clark@cclark.uk>
parents: 2798
diff changeset
670 if (!stat_utf8(fd->path, &st) || (tl->fd->format_class != FORMAT_CLASS_IMAGE && tl->fd->format_class != FORMAT_CLASS_RAWIMAGE && tl->fd->format_class != FORMAT_CLASS_VIDEO && tl->fd->format_class != FORMAT_CLASS_COLLECTION && tl->fd->format_class != FORMAT_CLASS_PDF && !options->file_filter.disable))
972
709edc695101 set fallback pixbuf in case of missing file
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 881
diff changeset
671 {
709edc695101 set fallback pixbuf in case of missing file
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 881
diff changeset
672 thumb_loader_std_set_fallback(tl);
709edc695101 set fallback pixbuf in case of missing file
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 881
diff changeset
673 return FALSE;
709edc695101 set fallback pixbuf in case of missing file
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 881
diff changeset
674 }
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
675 tl->source_mtime = st.st_mtime;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
676 tl->source_size = st.st_size;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
677 tl->source_mode = st.st_mode;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
678
2566
034d8772d6d8 Fix #500: Geeqie doesn’t use shared thumbnail folder
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
679 if (!thumb_cache)
034d8772d6d8 Fix #500: Geeqie doesn’t use shared thumbnail folder
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
680 {
034d8772d6d8 Fix #500: Geeqie doesn’t use shared thumbnail folder
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
681 thumb_cache = g_strdup(get_thumbnails_standard_cache_dir());
034d8772d6d8 Fix #500: Geeqie doesn’t use shared thumbnail folder
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
682 }
034d8772d6d8 Fix #500: Geeqie doesn’t use shared thumbnail folder
Colin Clark <colin.clark@cclark.uk>
parents: 2350
diff changeset
683
838
fd3a200281f6 use FileData in thumb_loader
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 827
diff changeset
684 if (strncmp(tl->fd->path, thumb_cache, strlen(thumb_cache)) != 0)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
685 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
686 gchar *pathl;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
687
838
fd3a200281f6 use FileData in thumb_loader
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 827
diff changeset
688 pathl = path_from_utf8(fd->path);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
689 tl->thumb_uri = g_filename_to_uri(pathl, NULL, NULL);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
690 tl->local_uri = filename_from_path(tl->thumb_uri);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
691 g_free(pathl);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
692 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
693
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
694 if (tl->cache_enable)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
695 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
696 gint found;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
697
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
698 tl->thumb_path = thumb_loader_std_cache_path(tl, FALSE, NULL, FALSE);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
699 tl->thumb_path_local = FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
700
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
701 found = isfile(tl->thumb_path);
1927
d1a5b8633919 always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1802
diff changeset
702 if (found)
d1a5b8633919 always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1802
diff changeset
703 {
d1a5b8633919 always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1802
diff changeset
704 FileData *fd = file_data_new_no_grouping(tl->thumb_path);
d1a5b8633919 always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1802
diff changeset
705 if (thumb_loader_std_setup(tl, fd))
d1a5b8633919 always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1802
diff changeset
706 {
d1a5b8633919 always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1802
diff changeset
707 file_data_unref(fd);
d1a5b8633919 always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1802
diff changeset
708 return TRUE;
d1a5b8633919 always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1802
diff changeset
709 }
d1a5b8633919 always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1802
diff changeset
710 file_data_unref(fd);
d1a5b8633919 always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1802
diff changeset
711 }
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
712
876
0348bca8bb71 set fallback thumbnail pixbuf only if the loading really fails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 864
diff changeset
713 if (thumb_loader_std_fail_check(tl) ||
0348bca8bb71 set fallback thumbnail pixbuf only if the loading really fails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 864
diff changeset
714 !thumb_loader_std_next_source(tl, found))
0348bca8bb71 set fallback thumbnail pixbuf only if the loading really fails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 864
diff changeset
715 {
0348bca8bb71 set fallback thumbnail pixbuf only if the loading really fails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 864
diff changeset
716 thumb_loader_std_set_fallback(tl);
0348bca8bb71 set fallback thumbnail pixbuf only if the loading really fails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 864
diff changeset
717 return FALSE;
0348bca8bb71 set fallback thumbnail pixbuf only if the loading really fails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 864
diff changeset
718 }
0348bca8bb71 set fallback thumbnail pixbuf only if the loading really fails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 864
diff changeset
719 return TRUE;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
720 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
721
1009
5847765e8189 fixed thumbnail loader for the new raw preview interface
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 972
diff changeset
722 if (!thumb_loader_std_setup(tl, tl->fd))
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
723 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
724 thumb_loader_std_save(tl, NULL);
876
0348bca8bb71 set fallback thumbnail pixbuf only if the loading really fails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 864
diff changeset
725 thumb_loader_std_set_fallback(tl);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
726 return FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
727 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
728
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
729 return TRUE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
730 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
731
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
732 void thumb_loader_std_free(ThumbLoaderStd *tl)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
733 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
734 if (!tl) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
735
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
736 thumb_loader_std_reset(tl);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
737 g_free(tl);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
738 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
739
864
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 845
diff changeset
740 GdkPixbuf *thumb_loader_std_get_pixbuf(ThumbLoaderStd *tl)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
741 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
742 GdkPixbuf *pixbuf;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
743
845
06f57cd7f595 renamed fd->pixbuf to fd->thumb_pixbuf
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 844
diff changeset
744 if (tl && tl->fd && tl->fd->thumb_pixbuf)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
745 {
845
06f57cd7f595 renamed fd->pixbuf to fd->thumb_pixbuf
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 844
diff changeset
746 pixbuf = tl->fd->thumb_pixbuf;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
747 g_object_ref(pixbuf);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
748 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
749 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
750 {
864
83be8234df2d added pixbuf_fallback function
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 845
diff changeset
751 pixbuf = pixbuf_fallback(NULL, tl->requested_width, tl->requested_height);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
752 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
753
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
754 return pixbuf;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
755 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
756
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
757
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
758 typedef struct _ThumbValidate ThumbValidate;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
759 struct _ThumbValidate
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
760 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
761 ThumbLoaderStd *tl;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
762 gchar *path;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
763 gint days;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
764
1446
12c4e43e82c1 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
765 void (*func_valid)(const gchar *path, gboolean valid, gpointer data);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
766 gpointer data;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
767
1523
e52aabe8fc7a Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents: 1521
diff changeset
768 guint idle_id; /* event source id */
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
769 };
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
770
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
771 static void thumb_loader_std_thumb_file_validate_free(ThumbValidate *tv)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
772 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
773 thumb_loader_std_free(tv->tl);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
774 g_free(tv->path);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
775 g_free(tv);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
776 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
777
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
778 void thumb_loader_std_thumb_file_validate_cancel(ThumbLoaderStd *tl)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
779 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
780 ThumbValidate *tv;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
781
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
782 if (!tl) return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
783
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
784 tv = tl->data;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
785
1523
e52aabe8fc7a Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents: 1521
diff changeset
786 if (tv->idle_id)
e52aabe8fc7a Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents: 1521
diff changeset
787 {
e52aabe8fc7a Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents: 1521
diff changeset
788 g_source_remove(tv->idle_id);
e52aabe8fc7a Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents: 1521
diff changeset
789 tv->idle_id = 0;
e52aabe8fc7a Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents: 1521
diff changeset
790 }
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
791
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
792 thumb_loader_std_thumb_file_validate_free(tv);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
793 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
794
1446
12c4e43e82c1 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
795 static void thumb_loader_std_thumb_file_validate_finish(ThumbValidate *tv, gboolean valid)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
796 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
797 if (tv->func_valid) tv->func_valid(tv->path, valid, tv->data);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
798
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
799 thumb_loader_std_thumb_file_validate_free(tv);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
800 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
801
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
802 static void thumb_loader_std_thumb_file_validate_done_cb(ThumbLoaderStd *tl, gpointer data)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
803 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
804 ThumbValidate *tv = data;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
805 GdkPixbuf *pixbuf;
1437
cc423d10b73e gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1365
diff changeset
806 gboolean valid = FALSE;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
807
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2021
diff changeset
808 /* get the original thumbnail pixbuf (unrotated, with original options)
1721
888d345c60b8 fixed moving and maintenance of std. thumbnails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1567
diff changeset
809 this is called from image_loader done callback, so tv->tl->il must exist*/
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2021
diff changeset
810 pixbuf = image_loader_get_pixbuf(tv->tl->il);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
811 if (pixbuf)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
812 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
813 const gchar *uri;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
814 const gchar *mtime_str;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
815
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
816 uri = gdk_pixbuf_get_option(pixbuf, THUMB_MARKER_URI);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
817 mtime_str = gdk_pixbuf_get_option(pixbuf, THUMB_MARKER_MTIME);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
818 if (uri && mtime_str)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
819 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
820 if (strncmp(uri, "file:", strlen("file:")) == 0)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
821 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
822 struct stat st;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
823 gchar *target;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
824
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
825 target = g_filename_from_uri(uri, NULL, NULL);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
826 if (stat(target, &st) == 0 &&
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
827 st.st_mtime == strtol(mtime_str, NULL, 10))
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
828 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
829 valid = TRUE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
830 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
831 g_free(target);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
832 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
833 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
834 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
835 struct stat st;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
836
506
03d66738b225 Handle the newline in DEBUG_N() macro instead of adding one
Laurent Monin <geeqie@norz.org>
parents: 495
diff changeset
837 DEBUG_1("thumb uri foreign, doing day check: %s", uri);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
838
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
839 if (stat_utf8(tv->path, &st))
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
840 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
841 time_t now;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
842
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
843 now = time(NULL);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
844 if (st.st_atime >= now - (time_t)tv->days * 24 * 60 * 60)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
845 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
846 valid = TRUE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
847 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
848 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
849 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
850 }
1721
888d345c60b8 fixed moving and maintenance of std. thumbnails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1567
diff changeset
851 else
888d345c60b8 fixed moving and maintenance of std. thumbnails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1567
diff changeset
852 {
888d345c60b8 fixed moving and maintenance of std. thumbnails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1567
diff changeset
853 DEBUG_1("invalid image found in std cache: %s", tv->path);
888d345c60b8 fixed moving and maintenance of std. thumbnails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1567
diff changeset
854 }
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
855 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
856
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
857 thumb_loader_std_thumb_file_validate_finish(tv, valid);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
858 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
859
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
860 static void thumb_loader_std_thumb_file_validate_error_cb(ThumbLoaderStd *tl, gpointer data)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
861 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
862 ThumbValidate *tv = data;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
863
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
864 thumb_loader_std_thumb_file_validate_finish(tv, FALSE);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
865 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
866
1446
12c4e43e82c1 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
867 static gboolean thumb_loader_std_thumb_file_validate_idle_cb(gpointer data)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
868 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
869 ThumbValidate *tv = data;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
870
1523
e52aabe8fc7a Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents: 1521
diff changeset
871 tv->idle_id = 0;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
872 thumb_loader_std_thumb_file_validate_finish(tv, FALSE);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
873
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
874 return FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
875 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
876
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
877 ThumbLoaderStd *thumb_loader_std_thumb_file_validate(const gchar *thumb_path, gint allowed_days,
1446
12c4e43e82c1 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
878 void (*func_valid)(const gchar *path, gboolean valid, gpointer data),
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
879 gpointer data)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
880 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
881 ThumbValidate *tv;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
882
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
883 tv = g_new0(ThumbValidate, 1);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
884
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
885 tv->tl = thumb_loader_std_new(THUMB_SIZE_LARGE, THUMB_SIZE_LARGE);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
886 thumb_loader_std_set_callbacks(tv->tl,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
887 thumb_loader_std_thumb_file_validate_done_cb,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
888 thumb_loader_std_thumb_file_validate_error_cb,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
889 NULL,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
890 tv);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
891 thumb_loader_std_reset(tv->tl);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
892
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
893 tv->path = g_strdup(thumb_path);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
894 tv->days = allowed_days;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
895 tv->func_valid = func_valid;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
896 tv->data = data;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
897
1927
d1a5b8633919 always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1802
diff changeset
898 FileData *fd = file_data_new_no_grouping(thumb_path);
d1a5b8633919 always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1802
diff changeset
899 if (!thumb_loader_std_setup(tv->tl, fd))
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
900 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
901 tv->idle_id = g_idle_add(thumb_loader_std_thumb_file_validate_idle_cb, tv);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
902 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
903 else
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
904 {
1523
e52aabe8fc7a Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents: 1521
diff changeset
905 tv->idle_id = 0;
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
906 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
907
1927
d1a5b8633919 always check for sidecars by readdir
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1802
diff changeset
908 file_data_unref(fd);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
909 return tv->tl;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
910 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
911
1446
12c4e43e82c1 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
912 static void thumb_std_maint_remove_one(const gchar *source, const gchar *uri, gboolean local,
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
913 const gchar *subfolder)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
914 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
915 gchar *thumb_path;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
916
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
917 thumb_path = thumb_std_cache_path(source,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
918 (local) ? filename_from_path(uri) : uri,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
919 local, subfolder);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
920 if (isfile(thumb_path))
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
921 {
506
03d66738b225 Handle the newline in DEBUG_N() macro instead of adding one
Laurent Monin <geeqie@norz.org>
parents: 495
diff changeset
922 DEBUG_1("thumb removing: %s", thumb_path);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
923 unlink_file(thumb_path);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
924 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
925 g_free(thumb_path);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
926 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
927
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
928 /* this also removes local thumbnails (the source is gone so it makes sense) */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
929 void thumb_std_maint_removed(const gchar *source)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
930 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
931 gchar *uri;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
932 gchar *sourcel;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
933
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
934 sourcel = path_from_utf8(source);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
935 uri = g_filename_to_uri(sourcel, NULL, NULL);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
936 g_free(sourcel);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
937
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
938 /* all this to remove a thumbnail? */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
939
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
940 thumb_std_maint_remove_one(source, uri, FALSE, THUMB_FOLDER_NORMAL);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
941 thumb_std_maint_remove_one(source, uri, FALSE, THUMB_FOLDER_LARGE);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
942 thumb_std_maint_remove_one(source, uri, FALSE, THUMB_FOLDER_FAIL);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
943 thumb_std_maint_remove_one(source, uri, TRUE, THUMB_FOLDER_NORMAL);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
944 thumb_std_maint_remove_one(source, uri, TRUE, THUMB_FOLDER_LARGE);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
945
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
946 g_free(uri);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
947 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
948
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
949 typedef struct _TMaintMove TMaintMove;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
950 struct _TMaintMove
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
951 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
952 gchar *source;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
953 gchar *dest;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
954
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
955 ThumbLoaderStd *tl;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
956 gchar *source_uri;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
957 gchar *thumb_path;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
958
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
959 gint pass;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
960 };
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
961
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
962 static GList *thumb_std_maint_move_list = NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
963 static GList *thumb_std_maint_move_tail = NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
964
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
965
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
966 static void thumb_std_maint_move_step(TMaintMove *tm);
1446
12c4e43e82c1 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
967 static gboolean thumb_std_maint_move_idle(gpointer data);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
968
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
969
1446
12c4e43e82c1 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
970 static void thumb_std_maint_move_validate_cb(const gchar *path, gboolean valid, gpointer data)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
971 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
972 TMaintMove *tm = data;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
973 GdkPixbuf *pixbuf;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
974
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2021
diff changeset
975 /* get the original thumbnail pixbuf (unrotated, with original options)
1721
888d345c60b8 fixed moving and maintenance of std. thumbnails
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1567
diff changeset
976 this is called from image_loader done callback, so tm->tl->il must exist*/
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2021
diff changeset
977 pixbuf = image_loader_get_pixbuf(tm->tl->il);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
978 if (pixbuf)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
979 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
980 const gchar *uri;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
981 const gchar *mtime_str;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
982
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
983 uri = gdk_pixbuf_get_option(pixbuf, THUMB_MARKER_URI);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
984 mtime_str = gdk_pixbuf_get_option(pixbuf, THUMB_MARKER_MTIME);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
985
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
986 if (uri && mtime_str && strcmp(uri, tm->source_uri) == 0)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
987 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
988 gchar *pathl;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
989
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
990 /* The validation utility abuses ThumbLoader, and we
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
991 * abuse the utility just to load the thumbnail,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
992 * but the loader needs to look sane for the save to complete.
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
993 */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
994
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
995 tm->tl->cache_enable = TRUE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
996 tm->tl->cache_hit = FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
997 tm->tl->cache_local = FALSE;
838
fd3a200281f6 use FileData in thumb_loader
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 827
diff changeset
998 file_data_unref(tm->tl->fd);
1936
ed6aa14b66c9 rename file_data_new_simple to file_data_new_group, filedata.c cleanup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1927
diff changeset
999 tm->tl->fd = file_data_new_group(tm->dest);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1000 tm->tl->source_mtime = strtol(mtime_str, NULL, 10);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1001
838
fd3a200281f6 use FileData in thumb_loader
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 827
diff changeset
1002 pathl = path_from_utf8(tm->tl->fd->path);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1003 g_free(tm->tl->thumb_uri);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1004 tm->tl->thumb_uri = g_filename_to_uri(pathl, NULL, NULL);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1005 tm->tl->local_uri = filename_from_path(tm->tl->thumb_uri);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1006 g_free(pathl);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1007
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1008 g_free(tm->tl->thumb_path);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1009 tm->tl->thumb_path = NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1010 tm->tl->thumb_path_local = FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1011
506
03d66738b225 Handle the newline in DEBUG_N() macro instead of adding one
Laurent Monin <geeqie@norz.org>
parents: 495
diff changeset
1012 DEBUG_1("thumb move attempting save:");
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1013
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1014 thumb_loader_std_save(tm->tl, pixbuf);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1015 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1016
506
03d66738b225 Handle the newline in DEBUG_N() macro instead of adding one
Laurent Monin <geeqie@norz.org>
parents: 495
diff changeset
1017 DEBUG_1("thumb move unlink: %s", tm->thumb_path);
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1018 unlink_file(tm->thumb_path);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1019 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1020
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1021 thumb_std_maint_move_step(tm);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1022 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1023
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1024 static void thumb_std_maint_move_step(TMaintMove *tm)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1025 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1026 const gchar *folder;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1027
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1028 tm->pass++;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1029 if (tm->pass > 2)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1030 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1031 g_free(tm->source);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1032 g_free(tm->dest);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1033 g_free(tm->source_uri);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1034 g_free(tm->thumb_path);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1035 g_free(tm);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1036
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1037 if (thumb_std_maint_move_list)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1038 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1039 g_idle_add_full(G_PRIORITY_LOW, thumb_std_maint_move_idle, NULL, NULL);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1040 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1041
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1042 return;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1043 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1044
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1045 folder = (tm->pass == 1) ? THUMB_FOLDER_NORMAL : THUMB_FOLDER_LARGE;
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 436
diff changeset
1046
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1047 g_free(tm->thumb_path);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1048 tm->thumb_path = thumb_std_cache_path(tm->source, tm->source_uri, FALSE, folder);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1049 tm->tl = thumb_loader_std_thumb_file_validate(tm->thumb_path, 0,
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1050 thumb_std_maint_move_validate_cb, tm);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1051 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1052
1446
12c4e43e82c1 gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1437
diff changeset
1053 static gboolean thumb_std_maint_move_idle(gpointer data)
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1054 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1055 TMaintMove *tm;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1056 gchar *pathl;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1057
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1058 if (!thumb_std_maint_move_list) return FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1059
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1060 tm = thumb_std_maint_move_list->data;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1061
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1062 thumb_std_maint_move_list = g_list_remove(thumb_std_maint_move_list, tm);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1063 if (!thumb_std_maint_move_list) thumb_std_maint_move_tail = NULL;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1064
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1065 pathl = path_from_utf8(tm->source);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1066 tm->source_uri = g_filename_to_uri(pathl, NULL, NULL);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1067 g_free(pathl);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1068
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1069 tm->pass = 0;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1070
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1071 thumb_std_maint_move_step(tm);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1072
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1073 return FALSE;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1074 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1075
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1076 /* This will schedule a move of the thumbnail for source image to dest when idle.
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1077 * We do this so that file renaming or moving speed is not sacrificed by
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1078 * moving the thumbnails at the same time because:
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1079 *
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1080 * This cache design requires the tedious task of loading the png thumbnails and saving them.
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1081 *
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1082 * The thumbnails are processed when the app is idle. If the app
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1083 * exits early well too bad - they can simply be regenerated from scratch.
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1084 *
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1085 * This does not manage local thumbnails (fixme ?)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1086 */
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1087 void thumb_std_maint_moved(const gchar *source, const gchar *dest)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1088 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1089 TMaintMove *tm;
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1090
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1091 tm = g_new0(TMaintMove, 1);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1092 tm->source = g_strdup(source);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1093 tm->dest = g_strdup(dest);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1094
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1095 if (!thumb_std_maint_move_list)
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1096 {
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1097 g_idle_add_full(G_PRIORITY_LOW, thumb_std_maint_move_idle, NULL, NULL);
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1098 }
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1099
827
e3272195662c Revert patches 759 and 760.
Laurent Monin <geeqie@norz.org>
parents: 717
diff changeset
1100 if (thumb_std_maint_move_tail)
e3272195662c Revert patches 759 and 760.
Laurent Monin <geeqie@norz.org>
parents: 717
diff changeset
1101 {
e3272195662c Revert patches 759 and 760.
Laurent Monin <geeqie@norz.org>
parents: 717
diff changeset
1102 thumb_std_maint_move_tail = g_list_append(thumb_std_maint_move_tail, tm);
e3272195662c Revert patches 759 and 760.
Laurent Monin <geeqie@norz.org>
parents: 717
diff changeset
1103 thumb_std_maint_move_tail = thumb_std_maint_move_tail->next;
e3272195662c Revert patches 759 and 760.
Laurent Monin <geeqie@norz.org>
parents: 717
diff changeset
1104 }
e3272195662c Revert patches 759 and 760.
Laurent Monin <geeqie@norz.org>
parents: 717
diff changeset
1105 else
e3272195662c Revert patches 759 and 760.
Laurent Monin <geeqie@norz.org>
parents: 717
diff changeset
1106 {
e3272195662c Revert patches 759 and 760.
Laurent Monin <geeqie@norz.org>
parents: 717
diff changeset
1107 thumb_std_maint_move_list = g_list_append(thumb_std_maint_move_list, tm);
e3272195662c Revert patches 759 and 760.
Laurent Monin <geeqie@norz.org>
parents: 717
diff changeset
1108 thumb_std_maint_move_tail = thumb_std_maint_move_list;
e3272195662c Revert patches 759 and 760.
Laurent Monin <geeqie@norz.org>
parents: 717
diff changeset
1109 }
9
8d9e9edd6fdf Sync to GQview 1.5.9 release.
John Ellis <johne@verizon.net>
parents:
diff changeset
1110 }
1055
4bbdfab3c89a Adding a vim modeline to all files - patch by Klaus Ethgen
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1036
diff changeset
1111 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */