diff --git a/src/bin/efreet/efreet_desktop_cache_create.c b/src/bin/efreet/efreet_desktop_cache_create.c index ec7553dcc8..8988168e94 100644 --- a/src/bin/efreet/efreet_desktop_cache_create.c +++ b/src/bin/efreet/efreet_desktop_cache_create.c @@ -70,13 +70,22 @@ cache_add(Eet_File *ef, const char *path, const char *file_id, int priority EINA *changed = 1; INF(" NEW"); } - else if (ecore_file_mod_time(desk->orig_path) != desk->load_time) + else { - efreet_desktop_free(desk); - *changed = 1; - desk = efreet_desktop_uncached_new(path); - if (desk) INF(" CHANGED"); - else INF(" NO UNCACHED"); + struct stat st; + if (!stat(desk->orig_path, &st)) + { + time_t modtime = st.st_mtime; + if (modtime < st.st_ctime) modtime = st.st_ctime; + if (modtime != desk->load_time) + { + efreet_desktop_free(desk); + *changed = 1; + desk = efreet_desktop_uncached_new(path); + if (desk) INF(" CHANGED"); + else INF(" NO UNCACHED"); + } + } } if (!desk) return 1; if (file_id && old_file_ids && !eina_hash_find(old_file_ids->hash, file_id)) diff --git a/src/lib/efreet/efreet_desktop.c b/src/lib/efreet/efreet_desktop.c index e56d06c908..f0c46d4c33 100644 --- a/src/lib/efreet/efreet_desktop.c +++ b/src/lib/efreet/efreet_desktop.c @@ -218,7 +218,17 @@ efreet_desktop_empty_new(const char *file) if (!desktop) return NULL; desktop->orig_path = strdup(file); - desktop->load_time = ecore_file_mod_time(file); + do + { + struct stat st; + + if (!stat(desktop->orig_path, &st)) + { + time_t modtime = st.st_mtime; + if (modtime < st.st_ctime) modtime = st.st_ctime; + desktop->load_time = modtime; + } + } while (0); desktop->ref = 1;