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