comparison 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
comparison
equal deleted inserted replaced
1213:bbec86370ef4 1214:31402ecb2aed
121 if (g_list_find(metadata_write_queue, fd)) return; 121 if (g_list_find(metadata_write_queue, fd)) return;
122 122
123 metadata_write_queue = g_list_prepend(metadata_write_queue, fd); 123 metadata_write_queue = g_list_prepend(metadata_write_queue, fd);
124 file_data_ref(fd); 124 file_data_ref(fd);
125 125
126 if (metadata_write_idle_id == -1) metadata_write_idle_id = g_idle_add(metadata_write_queue_idle_cb, NULL); 126 if (metadata_write_idle_id != -1)
127 {
128 g_source_remove(metadata_write_idle_id);
129 metadata_write_idle_id = -1;
130 }
131
132 if (options->metadata.confirm_timeout > 0)
133 {
134 metadata_write_idle_id = g_timeout_add(options->metadata.confirm_timeout * 1000, metadata_write_queue_idle_cb, NULL);
135 }
127 } 136 }
128 137
129 138
130 gboolean metadata_write_queue_remove(FileData *fd) 139 gboolean metadata_write_queue_remove(FileData *fd)
131 { 140 {
159 } 168 }
160 return ret; 169 return ret;
161 } 170 }
162 171
163 172
164 static gboolean metadata_write_queue_idle_cb(gpointer data) 173 gboolean metadata_write_queue_confirm()
165 { 174 {
166 GList *work; 175 GList *work;
167 GList *to_approve = NULL; 176 GList *to_approve = NULL;
168 177
169 work = metadata_write_queue; 178 work = metadata_write_queue;
182 } 191 }
183 192
184 file_util_write_metadata(NULL, to_approve, NULL); 193 file_util_write_metadata(NULL, to_approve, NULL);
185 194
186 filelist_free(to_approve); 195 filelist_free(to_approve);
187 196
197 return (metadata_write_queue != NULL);
198 }
199
200 static gboolean metadata_write_queue_idle_cb(gpointer data)
201 {
202 metadata_write_queue_confirm();
188 metadata_write_idle_id = -1; 203 metadata_write_idle_id = -1;
189 return FALSE; 204 return FALSE;
190 } 205 }
206
191 207
192 gboolean metadata_write_exif(FileData *fd, FileData *sfd) 208 gboolean metadata_write_exif(FileData *fd, FileData *sfd)
193 { 209 {
194 gboolean success; 210 gboolean success;
195 ExifData *exif; 211 ExifData *exif;