diff src/metadata.c @ 1702:9efd43f52b5b

remove deleted files from metadata queue
author nadvornik
date Sat, 22 Aug 2009 21:58:49 +0000
parents 2ec2f6827127
children
line wrap: on
line diff
--- a/src/metadata.c	Sat Aug 22 20:20:19 2009 +0000
+++ b/src/metadata.c	Sat Aug 22 21:58:49 2009 +0000
@@ -126,6 +126,18 @@
 	return ret;
 }
 
+void metadata_notify_cb(FileData *fd, NotifyType type, gpointer data)
+{
+	if ((type & (NOTIFY_REREAD | NOTIFY_CHANGE)) && g_list_find(metadata_write_queue, fd)) 
+		{
+		DEBUG_1("Notify metadata: %s %04x", fd->path, type);
+		if (!isname(fd->path))
+			{
+			/* ignore deleted files */
+			metadata_write_queue_remove(fd);
+			}
+		}
+}
 
 gboolean metadata_write_queue_confirm(FileUtilDoneFunc done_func, gpointer done_data)
 {
@@ -138,6 +150,13 @@
 		FileData *fd = work->data;
 		work = work->next;
 		
+		if (!isname(fd->path))
+			{
+			/* ignore deleted files */
+			metadata_write_queue_remove(fd);
+			continue;
+			}
+		
 		if (fd->change) continue; /* another operation in progress, skip this file for now */
 		
 		to_approve = g_list_prepend(to_approve, file_data_ref(fd));