+static gboolean vf_read_metadata_in_idle_cb(gpointer data)
+{
+ FileData *fd;
+ ViewFile *vf = data;
+ GList *list_entry;
+ GList *work;
+
+ vf_thumb_status(vf, vf_read_metadata_in_idle_progress(vf), _("Loading meta..."));
+
+ work = vf->list;
+
+ while (work)
+ {
+ fd = work->data;
+
+ if (fd && !fd->metadata_in_idle_loaded)
+ {
+ if (!fd->exifdate)
+ {
+ read_exif_time_data(fd);
+ }
+ if (!fd->exifdate_digitized)
+ {
+ read_exif_time_digitized_data(fd);
+ }
+ if (fd->rating == STAR_RATING_NOT_READ)
+ {
+ read_rating_data(fd);
+ }
+ fd->metadata_in_idle_loaded = TRUE;
+ return TRUE;
+ }
+ work = work->next;
+ }
+
+ vf_thumb_status(vf, 0.0, NULL);
+ vf->read_metadata_in_idle_id = 0;
+ vf_refresh(vf);
+ return FALSE;
+}
+
+static void vf_read_metadata_in_idle_finished_cb(gpointer data)
+{
+ ViewFile *vf = data;
+
+ vf_thumb_status(vf, 0.0, "Loading meta...");
+ vf->read_metadata_in_idle_id = 0;
+}
+
+void vf_read_metadata_in_idle(ViewFile *vf)
+{
+ GList *work;
+ FileData *fd;
+
+ if (!vf) return;
+
+ if (vf->read_metadata_in_idle_id)
+ {
+ g_idle_remove_by_data(vf);
+ }
+ vf->read_metadata_in_idle_id = 0;
+
+ if (vf->list)
+ {
+ vf->read_metadata_in_idle_id = g_idle_add_full(G_PRIORITY_LOW, vf_read_metadata_in_idle_cb, vf, vf_read_metadata_in_idle_finished_cb);
+ }
+
+ return;
+}
+