diff options
Diffstat (limited to 'src/generators.c')
| -rw-r--r-- | src/generators.c | 19 |
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); |
