edje: check that the file on disk didn't change when we try to reopen it.

SVN revision: 70883
This commit is contained in:
Cedric BAIL 2012-05-09 07:30:59 +00:00
parent cc3caf6172
commit 8f61823f67
3 changed files with 14 additions and 2 deletions

View File

@ -431,3 +431,5 @@
2012-05-09 Cedric Bail
* Fix bug in case of nesting edje_object_signal_emit and edje_object_signal_callback_{add,del}
* Check that the file changed on disk when trying to reopen it.

View File

@ -12,6 +12,7 @@ Improvements:
Fixes:
* Add missing files in the tarballs.
* Prevent crash when running nested edje_object_signal_emit with edje_object_signal_callback_{add,del}.
* Do actually verify that the file on disk is different from the file we have loaded.
Edje 1.2.0

View File

@ -290,8 +290,16 @@ _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *g
if (!file) file = "";
if (!group) group = "";
if (((ed->path) && (!strcmp(file, ed->path))) &&
(ed->group) && (!strcmp(group, ed->group)))
return 1;
(ed->group) && (!strcmp(group, ed->group)) &&
ed->file)
{
struct stat st;
if (stat(file, &st) != 0)
return 1;
if (st.st_mtime == ed->file->mtime)
return 1;
}
tev = evas_object_evas_get(obj);
evas_event_freeze(tev);
@ -299,6 +307,7 @@ _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *g
if (_edje_script_only(ed)) _edje_script_only_shutdown(ed);
if (_edje_lua_script_only(ed)) _edje_lua_script_only_shutdown(ed);
_edje_file_del(ed);
eina_stringshare_replace(&ed->path, file);