prepared infrastructure for delayed metadata writting - refreshing
[geeqie.git] / src / exif-common.c
index 1aba8ba..81c7d06 100644 (file)
@@ -627,10 +627,27 @@ ExifData *exif_read_fd(FileData *fd)
                        }
                }
 
-       fd->exif = exif_read(fd->path, sidecar_path);
+       fd->exif = exif_read(fd->path, sidecar_path, fd->modified_xmp);
        return fd->exif;
 }
 
+gint exif_write_fd(FileData *fd)
+{
+       gint success;
+       ExifData *exif;
+       
+       /*  exif_read_fd can either use cached metadata which have fd->modified_xmp already applied 
+                                    or read metadata from file and apply fd->modified_xmp
+           metadata are read also if the file was modified meanwhile */
+       exif = exif_read_fd(fd); 
+       if (!exif) return FALSE;
+       success = exif_write(exif); /* write modified metadata */
+       exif_free_fd(fd, exif);
+       g_hash_table_destroy(fd->modified_xmp);
+       fd->modified_xmp = NULL;
+       return success;
+}
+
 void exif_free_fd(FileData *fd, ExifData *exif)
 {
        if (!fd) return;