Mercurial > geeqie.yaz
diff src/metadata.c @ 1214:31402ecb2aed
write metadata after timeout, image change or dir change
author | nadvornik |
---|---|
date | Mon, 22 Dec 2008 18:29:25 +0000 |
parents | e2bbe90b0dcd |
children | 46e4fda574dd |
line wrap: on
line diff
--- a/src/metadata.c Mon Dec 22 18:15:26 2008 +0000 +++ b/src/metadata.c Mon Dec 22 18:29:25 2008 +0000 @@ -123,7 +123,16 @@ metadata_write_queue = g_list_prepend(metadata_write_queue, fd); file_data_ref(fd); - if (metadata_write_idle_id == -1) metadata_write_idle_id = g_idle_add(metadata_write_queue_idle_cb, NULL); + if (metadata_write_idle_id != -1) + { + g_source_remove(metadata_write_idle_id); + metadata_write_idle_id = -1; + } + + if (options->metadata.confirm_timeout > 0) + { + metadata_write_idle_id = g_timeout_add(options->metadata.confirm_timeout * 1000, metadata_write_queue_idle_cb, NULL); + } } @@ -161,7 +170,7 @@ } -static gboolean metadata_write_queue_idle_cb(gpointer data) +gboolean metadata_write_queue_confirm() { GList *work; GList *to_approve = NULL; @@ -184,11 +193,18 @@ file_util_write_metadata(NULL, to_approve, NULL); filelist_free(to_approve); + + return (metadata_write_queue != NULL); +} +static gboolean metadata_write_queue_idle_cb(gpointer data) +{ + metadata_write_queue_confirm(); metadata_write_idle_id = -1; return FALSE; } + gboolean metadata_write_exif(FileData *fd, FileData *sfd) { gboolean success;