diff src/metadata.c @ 1205:3ff2aa99108b

use the workflow in utilops.c for metadata approving and writting TODO: configuration
author nadvornik
date Sat, 20 Dec 2008 20:43:56 +0000
parents fa91098e4949
children c45cc5cf3c4d
line wrap: on
line diff
--- a/src/metadata.c	Tue Dec 16 12:59:23 2008 +0000
+++ b/src/metadata.c	Sat Dec 20 20:43:56 2008 +0000
@@ -58,7 +58,34 @@
 }
 
 
-static void metadata_write_queue_commit(FileData *fd)
+gboolean metadata_write_queue_remove(FileData *fd)
+{
+	g_hash_table_destroy(fd->modified_xmp);
+	fd->modified_xmp = NULL;
+
+	metadata_write_queue = g_list_remove(metadata_write_queue, fd);
+	file_data_unref(fd);
+	return TRUE;
+}
+
+
+static gboolean metadata_write_queue_idle_cb(gpointer data)
+{
+	/* TODO:  the queue should not be passed to file_util_write_metadata directly:
+		  metatata under .geeqie/ can be written immediately, 
+	          for others we can decide if we write to the image file or to sidecar */
+	
+
+//	if (metadata_write_queue) return TRUE;
+
+	/* confirm writting */
+	file_util_write_metadata(NULL, metadata_write_queue, NULL);
+
+	metadata_write_idle_id = -1;
+	return FALSE;
+}
+
+gboolean metadata_write_perform(FileData *fd)
 {
 	if (options->save_metadata_in_image_file &&
 	    exif_write_fd(fd))
@@ -66,25 +93,9 @@
 		metadata_legacy_delete(fd);
 		}
 	else metadata_legacy_write(fd);
-	
-	g_hash_table_destroy(fd->modified_xmp);
-	fd->modified_xmp = NULL;
-
-	metadata_write_queue = g_list_remove(metadata_write_queue, fd);
-	file_data_unref(fd);
+	return TRUE;
 }
 
-static gboolean metadata_write_queue_idle_cb(gpointer data)
-{
-	metadata_write_queue_commit(metadata_write_queue->data); /* the first entry */
-	
-	if (metadata_write_queue) return TRUE;
-
-	metadata_write_idle_id = -1;
-	return FALSE;
-}
-
-
 gint metadata_write_list(FileData *fd, const gchar *key, GList *values)
 {
 	if (!fd->modified_xmp)