summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFelix Riemann <[email protected]>2011-07-17 13:57:33 +0200
committerraveit65 <[email protected]>2018-07-15 16:11:33 +0200
commitaf9cd8386689a1f184804b4800ad18d0624e3032 (patch)
tree2f3f64bb4096513b2b65a24f528cf618d5e73b8f /src
parent7e9dc52f6a9e85f926d14b3f65afaf89b62c7edf (diff)
downloadeom-af9cd8386689a1f184804b4800ad18d0624e3032.tar.bz2
eom-af9cd8386689a1f184804b4800ad18d0624e3032.tar.xz
Make sure GPS Exif tags are named and ordered correctly
Some GPS tag IDs overlap with IDs from other IFDs. Specifically check for the GPS IFD and order the entries accordingly. Also respect the IFD when determining the tag's title. https://bugzilla.gnome.org/show_bug.cgi?id=627185 origin commit: https://gitlab.gnome.org/GNOME/eog/commit/8574b4b Fixes https://github.com/mate-desktop/eom/issues/125
Diffstat (limited to 'src')
-rw-r--r--src/eom-exif-details.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/eom-exif-details.c b/src/eom-exif-details.c
index bbc9aca..3281551 100644
--- a/src/eom-exif-details.c
+++ b/src/eom-exif-details.c
@@ -283,6 +283,11 @@ get_exif_category (ExifEntry *entry)
ExifCategory cat = EXIF_CATEGORY_OTHER;
int i;
+ /* Some GPS tag IDs overlap with other ones, so check the IFD */
+ if (exif_entry_get_ifd (entry) == EXIF_IFD_GPS) {
+ return EXIF_CATEGORY_OTHER;
+ }
+
for (i = 0; exif_tag_category_map [i].id != -1; i++) {
if (exif_tag_category_map[i].id == (int) entry->tag) {
cat = exif_tag_category_map[i].category;
@@ -353,6 +358,7 @@ exif_entry_cb (ExifEntry *entry, gpointer data)
EomExifDetails *view;
EomExifDetailsPrivate *priv;
ExifCategory cat;
+ ExifIfd ifd = exif_entry_get_ifd (entry);
char *path;
char b[1024];
@@ -367,7 +373,7 @@ exif_entry_cb (ExifEntry *entry, gpointer data)
set_row_data (store,
path,
NULL,
- exif_tag_get_name (entry->tag),
+ exif_tag_get_name_in_ifd (entry->tag, ifd),
exif_entry_get_value (entry, b, sizeof(b)));
} else {
@@ -399,7 +405,7 @@ exif_entry_cb (ExifEntry *entry, gpointer data)
path = set_row_data (store,
NULL,
exif_categories[cat].path,
- exif_tag_get_name (entry->tag),
+ exif_tag_get_name_in_ifd (entry->tag, ifd),
exif_entry_get_value (entry, b,
sizeof(b)));