efreet: write once cache to disk and notify only when needed.

NOTE: eet_sync just force the write of the eet file to the disk. 
That's exactly what eet_close will do also. eet_sync is just to
be used when you are planning to still use it and don't want to
close it soon.


SVN revision: 57233
This commit is contained in:
Cedric BAIL 2011-02-22 10:43:58 +00:00
parent 74a5463b36
commit 94a1ea33fa
2 changed files with 23 additions and 21 deletions

View File

@ -460,9 +460,7 @@ main(int argc, char **argv)
}
/* cleanup */
eet_sync(util_ef);
eet_close(util_ef);
eet_sync(ef);
eet_close(ef);
/* unlink old cache files */
@ -489,15 +487,18 @@ main(int argc, char **argv)
}
/* touch update file */
/* TODO: We need to signal whether the cache was updated or not */
snprintf(file, sizeof(file), "%s/efreet/desktop_data.update", efreet_cache_home_get());
tmpfd = open(file, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR);
if (tmpfd >= 0)
{
efreet_fsetowner(tmpfd);
if (write(tmpfd, "a", 1) != 1) perror("write");
close(tmpfd);
}
if (changed)
{
snprintf(file, sizeof(file), "%s/efreet/desktop_data.update", efreet_cache_home_get());
tmpfd = open(file, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR);
if (tmpfd >= 0)
{
efreet_fsetowner(tmpfd);
if (write(tmpfd, "a", 1) != 1) perror("write");
close(tmpfd);
}
}
EINA_LIST_FREE(scanned, dir)
eina_stringshare_del(dir);
eina_list_free(extra_dirs);

View File

@ -968,7 +968,6 @@ main(int argc, char **argv)
icon_theme_free(theme);
eet_data_write(icon_ef, efreet_version_edd(), EFREET_CACHE_VERSION, icon_version, 1);
eet_sync(icon_ef);
eet_close(icon_ef);
efreet_setowner(efreet_icon_cache_file(EFREET_CACHE_ICON_FALLBACK));
free(icon_version);
@ -977,20 +976,22 @@ main(int argc, char **argv)
/* save data */
eet_data_write(theme_ef, efreet_version_edd(), EFREET_CACHE_VERSION, theme_version, 1);
eet_sync(theme_ef);
eet_close(theme_ef);
efreet_setowner(efreet_icon_theme_cache_file());
free(theme_version);
/* touch update file */
snprintf(file, sizeof(file), "%s/efreet/icon_data.update", efreet_cache_home_get());
tmpfd = open(file, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR);
if (tmpfd >= 0)
{
efreet_fsetowner(tmpfd);
write(tmpfd, "a", 1);
close(tmpfd);
}
if (changed)
{
snprintf(file, sizeof(file), "%s/efreet/icon_data.update", efreet_cache_home_get());
tmpfd = open(file, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR);
if (tmpfd >= 0)
{
efreet_fsetowner(tmpfd);
write(tmpfd, "a", 1);
close(tmpfd);
}
}
on_error_efreet:
efreet_shutdown();