Evas GL: Also fix surface cap cache
This follows the fix in eina_file_mkstemp. Not sure how it could even work before. @fix
This commit is contained in:
parent
7832bab253
commit
a2ef5f7cc5
|
@ -816,43 +816,51 @@ _surface_cap_cache_save()
|
||||||
{
|
{
|
||||||
/* check eet */
|
/* check eet */
|
||||||
Eet_File *et = NULL; //check eet file
|
Eet_File *et = NULL; //check eet file
|
||||||
int tmpfd;
|
int tmpfd = -1;
|
||||||
int res = 0;
|
|
||||||
char cap_dir_path[PATH_MAX];
|
char cap_dir_path[PATH_MAX];
|
||||||
char cap_file_path[PATH_MAX];
|
char cap_file_path[PATH_MAX];
|
||||||
char tmp_file[PATH_MAX];
|
char tmp_file_name[PATH_MAX];
|
||||||
|
Eina_Tmpstr *tmp_file_path = NULL;
|
||||||
|
|
||||||
/* use eet */
|
/* use eet */
|
||||||
if (!eet_init()) return 0;
|
if (!eet_init()) return 0;
|
||||||
|
|
||||||
if (!evas_gl_common_file_cache_dir_check(cap_dir_path, sizeof(cap_dir_path)))
|
if (!evas_gl_common_file_cache_dir_check(cap_dir_path, sizeof(cap_dir_path)))
|
||||||
{
|
{
|
||||||
res = evas_gl_common_file_cache_mkpath(cap_dir_path);
|
if (!evas_gl_common_file_cache_mkpath(cap_dir_path))
|
||||||
if (!res) return 0; /* we can't make directory */
|
return 0; /* we can't make directory */
|
||||||
}
|
}
|
||||||
|
|
||||||
evas_gl_common_file_cache_file_check(cap_dir_path, "surface_cap", cap_file_path,
|
evas_gl_common_file_cache_file_check(cap_dir_path, "surface_cap", cap_file_path,
|
||||||
sizeof(cap_dir_path));
|
sizeof(cap_dir_path));
|
||||||
|
|
||||||
/* use mkstemp for writing */
|
/* use mkstemp for writing */
|
||||||
snprintf(tmp_file, sizeof(tmp_file), "%s.XXXXXX.cache", cap_file_path);
|
snprintf(tmp_file_name, sizeof(tmp_file_name), "%s.XXXXXX.cache", cap_file_path);
|
||||||
tmpfd = eina_file_mkstemp(tmp_file, NULL);
|
tmpfd = eina_file_mkstemp(tmp_file_name, &tmp_file_path);
|
||||||
if (tmpfd < 0) goto error;
|
if (tmpfd < 0) goto error;
|
||||||
close(tmpfd);
|
|
||||||
|
|
||||||
et = eet_open(tmp_file, EET_FILE_MODE_WRITE);
|
et = eet_open(tmp_file_path, EET_FILE_MODE_WRITE);
|
||||||
if (!et) goto error;
|
if (!et) goto error;
|
||||||
|
|
||||||
if (!_surface_cap_save(et)) goto error;
|
if (!_surface_cap_save(et)) goto error;
|
||||||
|
|
||||||
if (eet_close(et) != EET_ERROR_NONE) goto error;
|
if (eet_close(et) != EET_ERROR_NONE) goto destroyed;
|
||||||
if (rename(tmp_file,cap_file_path) < 0) goto error;
|
if (rename(tmp_file_path, cap_file_path) < 0) goto destroyed;
|
||||||
|
eina_tmpstr_del(tmp_file_path);
|
||||||
|
close(tmpfd);
|
||||||
eet_shutdown();
|
eet_shutdown();
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
destroyed:
|
||||||
|
et = NULL;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
|
if (tmpfd >= 0) close(tmpfd);
|
||||||
if (et) eet_close(et);
|
if (et) eet_close(et);
|
||||||
if (evas_gl_common_file_cache_file_exists(tmp_file)) unlink(tmp_file);
|
if (evas_gl_common_file_cache_file_exists(tmp_file_path))
|
||||||
|
unlink(tmp_file_path);
|
||||||
|
eina_tmpstr_del(tmp_file_path);
|
||||||
eet_shutdown();
|
eet_shutdown();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -243,7 +243,7 @@ _evas_gl_common_shader_binary_save(Evas_GL_Shared *shared)
|
||||||
char bin_dir_path[PATH_MAX];
|
char bin_dir_path[PATH_MAX];
|
||||||
char bin_file_path[PATH_MAX];
|
char bin_file_path[PATH_MAX];
|
||||||
char tmp_file_name[PATH_MAX];
|
char tmp_file_name[PATH_MAX];
|
||||||
int tmpfd = -1, res = 0, copy;
|
int tmpfd = -1, copy;
|
||||||
Eina_Tmpstr *tmp_file_path = NULL;
|
Eina_Tmpstr *tmp_file_path = NULL;
|
||||||
Eet_File *ef = NULL;
|
Eet_File *ef = NULL;
|
||||||
Evas_GL_Program *p;
|
Evas_GL_Program *p;
|
||||||
|
@ -255,8 +255,8 @@ _evas_gl_common_shader_binary_save(Evas_GL_Shared *shared)
|
||||||
|
|
||||||
if (!evas_gl_common_file_cache_dir_check(bin_dir_path, sizeof(bin_dir_path)))
|
if (!evas_gl_common_file_cache_dir_check(bin_dir_path, sizeof(bin_dir_path)))
|
||||||
{
|
{
|
||||||
res = evas_gl_common_file_cache_mkpath(bin_dir_path);
|
if (!evas_gl_common_file_cache_mkpath(bin_dir_path))
|
||||||
if (!res) return 0; /* we can't make directory */
|
return 0; /* we can't make directory */
|
||||||
}
|
}
|
||||||
|
|
||||||
copy = evas_gl_common_file_cache_file_check(bin_dir_path, "binary_shader", bin_file_path,
|
copy = evas_gl_common_file_cache_file_check(bin_dir_path, "binary_shader", bin_file_path,
|
||||||
|
|
Loading…
Reference in New Issue