summaryrefslogtreecommitdiff
path: root/src/generators.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/generators.c')
-rw-r--r--src/generators.c19
1 files changed, 6 insertions, 13 deletions
diff --git a/src/generators.c b/src/generators.c
index c1cb2e4..ae3219d 100644
--- a/src/generators.c
+++ b/src/generators.c
@@ -749,7 +749,6 @@ process_img_item (TGallerySetup *setup,
GHashTable *defines,
TImageSize *image_size,
TImageSize *thumb_image_size,
- ExifData *exif,
gboolean list_mode)
{
unsigned long img_w, img_h;
@@ -764,6 +763,7 @@ process_img_item (TGallerySetup *setup,
gchar *img_orig_dst_page;
gchar *title, *title_desc;
TImageSize *orig_image_size;
+ ExifData *exif = NULL;
if (list_mode) {
/* Index stuff */
@@ -833,6 +833,8 @@ process_img_item (TGallerySetup *setup,
replace_table_add_key_int (replace_table, "IMG_SIZE_H", img_h);
replace_table_add_key (replace_table, "IMG_SRC", img_dst_page);
+ exif = get_img_exif_data (setup, path_info, items, item, image_size);
+
/* TODO: legacy stuff, subject to removal */
orig_image_size = lookup_image_size_for_name (setup, "original");
if (orig_image_size == NULL)
@@ -875,7 +877,7 @@ process_img_item (TGallerySetup *setup,
/* EXIF callbacks - all do handle NULL value pointer */
replace_table_register_function (replace_table, "get_exif_value", get_exif_value_cb, exif);
replace_table_register_function (replace_table, "get_exif_value_fixed", get_exif_value_fixed_cb, exif);
- block_parser_register_function (block_parser, "have_exif_key", have_exif_key_cb, exif);
+ block_parser_register_function (block_parser, "have_exif_key", have_exif_key_cb, exif, (GDestroyNotify) exif_data_free);
if (exif != NULL && exif_has_key (exif, EXIF_APERTURE) &&
exif_has_key (exif, EXIF_FOCAL_LENGTH) &&
exif_has_key (exif, EXIF_EXPOSURE))
@@ -929,10 +931,8 @@ write_html_page (TGallerySetup *setup,
GHashTable *defines;
GHashTable *local_defines;
TImageSize *image_size, *thumb_image_size;
- ExifData *exif, *local_exif;
res = TRUE;
- exif = NULL;
fin = fopen (template_src, "r");
if (fin == NULL) {
@@ -1006,9 +1006,7 @@ write_html_page (TGallerySetup *setup,
/* Picture page tags */
if (item != NULL) {
add_next_prev_links (setup, path_info, theme, items, item, global_replace_table, image_size);
- if (image_size != NULL)
- exif = get_img_exif_data (setup, path_info, items, item, image_size);
- process_img_item (setup, path_info, theme, items, item, block_parser, global_replace_table, defines, image_size, thumb_image_size, exif, FALSE);
+ process_img_item (setup, path_info, theme, items, item, block_parser, global_replace_table, defines, image_size, thumb_image_size, FALSE);
}
/* Setup block parser */
@@ -1043,15 +1041,12 @@ write_html_page (TGallerySetup *setup,
local_replace_table = replace_table_new ();
local_defines = clone_string_hash_table (defines);
s1 = NULL;
- local_exif = NULL;
switch (iter_item->type) {
case INDEX_ITEM_TYPE_PICTURE:
if (! iter_item->hidden) {
s1 = block_parser_get_data (block_parser, "LIST_PICTURE");
- if (image_size != NULL)
- local_exif = get_img_exif_data (setup, path_info, items, iter_item, image_size);
- process_img_item (setup, path_info, theme, items, iter_item, local_block_parser, local_replace_table, local_defines, image_size, thumb_image_size, local_exif, TRUE);
+ process_img_item (setup, path_info, theme, items, iter_item, local_block_parser, local_replace_table, local_defines, image_size, thumb_image_size, TRUE);
}
break;
@@ -1072,7 +1067,6 @@ write_html_page (TGallerySetup *setup,
g_free (s2);
g_free (s1);
}
- exif_data_free (local_exif);
block_parser_free (local_block_parser);
replace_table_free (local_replace_table);
g_hash_table_destroy (local_defines);
@@ -1112,7 +1106,6 @@ write_html_page (TGallerySetup *setup,
fclose (fout);
fclose (fin);
g_free (buffer);
- exif_data_free (exif);
g_hash_table_destroy (defines);
replace_table_free (global_replace_table);
block_parser_free (block_parser);