efreet: make sure we flush new dirs

SVN revision: 48812
This commit is contained in:
Sebastian Dransfeld 2010-05-13 18:31:41 +00:00
parent 7c28e4ce29
commit dc91f4ebbf
1 changed files with 8 additions and 4 deletions

View File

@ -129,7 +129,7 @@ static Eina_Bool efreet_desktop_x_fields_save(const Eina_Hash *hash,
void *fdata);
static int efreet_desktop_environment_check(Efreet_Ini *ini);
static void efreet_desktop_write_cache_dirs_file(void);
static int efreet_desktop_write_cache_dirs_file(void);
static void efreet_desktop_cache_update_cb(void *data, Ecore_File_Monitor *em,
Ecore_File_Event event, const char *path);
@ -1309,7 +1309,7 @@ efreet_desktop_edd_shutdown(Eet_Data_Descriptor *edd)
eet_data_descriptor_free(edd);
}
static void
static int
efreet_desktop_write_cache_dirs_file(void)
{
char file[PATH_MAX];
@ -1319,9 +1319,11 @@ efreet_desktop_write_cache_dirs_file(void)
char *dir;
struct stat st;
if (!efreet_desktop_dirs) return 1;
snprintf(file, sizeof(file), "%s/.efreet/desktop_data.lock", efreet_home_dir_get());
fd = open(file, O_CREAT | O_RDONLY, S_IRUSR | S_IWUSR);
if (fd < 0) return;
if (fd < 0) return 0;
/* TODO: Retry update cache later */
if (flock(fd, LOCK_EX | LOCK_NB) < 0) goto error;
@ -1362,12 +1364,14 @@ efreet_desktop_write_cache_dirs_file(void)
eina_stringshare_del(dir);
}
efreet_desktop_dirs = NULL;
return 1;
error:
if (map != MAP_FAILED) munmap(map, st.st_size);
if (fd > 0) close(fd);
if (cachefd > 0) close(cachefd);
efreet_desktop_job = NULL;
return 0;
}
static void
@ -1470,7 +1474,7 @@ efreet_desktop_update_cache_job(void *data __UNUSED__)
/* TODO: Retry update cache later */
if (efreet_desktop_exe_lock > 0) return;
efreet_desktop_write_cache_dirs_file();
if (!efreet_desktop_write_cache_dirs_file()) return;
snprintf(file, sizeof(file), "%s/.efreet/desktop_exec.lock", efreet_home_dir_get());