forked from enlightenment/efl
Revert "Revert "canvas vg: fix up a regression error by file_load(),""
This reverts commit fd01eec0f5
.
This commit is contained in:
parent
deb0756e60
commit
44145cd1d4
|
@ -244,6 +244,37 @@ _efl_canvas_vg_object_viewbox_align_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Vg
|
|||
if (align_y) *align_y = pd->align_y;
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Error
|
||||
_efl_canvas_vg_object_efl_file_file_set(Eo *eo_obj, Efl_Canvas_Vg_Object_Data *pd EINA_UNUSED, const char *file)
|
||||
{
|
||||
/* Careful: delete previous vg entry.
|
||||
When a new efl file is set, ex-file will be invalid.
|
||||
Since vg cache hashes all file entries,
|
||||
we must remove it from vg cache before we lost file handle. */
|
||||
if (efl_file_loaded_get(eo_obj))
|
||||
{
|
||||
const char *pname = efl_file_get(eo_obj);
|
||||
int pl = pname ? strlen(pname) : 0;
|
||||
int cl = file ? strlen(file) : 0;
|
||||
|
||||
if ((pl != cl) || strcmp(pname, file))
|
||||
{
|
||||
Evas_Object_Protected_Data *obj;
|
||||
obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
|
||||
evas_cache_vg_entry_del(pd->vg_entry);
|
||||
evas_object_change(eo_obj, obj);
|
||||
pd->vg_entry = NULL;
|
||||
evas_object_change(eo_obj, obj);
|
||||
}
|
||||
}
|
||||
|
||||
Eina_Error err;
|
||||
err = efl_file_set(efl_super(eo_obj, MY_CLASS), file);
|
||||
if (err) return err;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Error
|
||||
_efl_canvas_vg_object_efl_file_load(Eo *eo_obj, Efl_Canvas_Vg_Object_Data *pd)
|
||||
{
|
||||
|
@ -255,16 +286,13 @@ _efl_canvas_vg_object_efl_file_load(Eo *eo_obj, Efl_Canvas_Vg_Object_Data *pd)
|
|||
|
||||
const Eina_File *file = efl_file_mmap_get(eo_obj);
|
||||
const char *key = efl_file_key_get(eo_obj);
|
||||
Vg_Cache_Entry *old_entry;
|
||||
Evas_Object_Protected_Data *obj;
|
||||
|
||||
obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
|
||||
old_entry = pd->vg_entry;
|
||||
pd->vg_entry = evas_cache_vg_entry_create(file, key,
|
||||
obj->cur->geometry.w,
|
||||
obj->cur->geometry.h);
|
||||
evas_object_change(eo_obj, obj);
|
||||
evas_cache_vg_entry_del(old_entry);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -84,6 +84,7 @@ class @beta Efl.Canvas.Vg.Object extends Efl.Canvas.Object implements Efl.File,
|
|||
Efl.Object.destructor;
|
||||
Efl.File.load;
|
||||
Efl.File.unload;
|
||||
Efl.File.file { set; }
|
||||
Efl.File_Save.save;
|
||||
Efl.Gfx.Frame_Controller.animated { get; }
|
||||
Efl.Gfx.Frame_Controller.frame { get; set; }
|
||||
|
|
Loading…
Reference in New Issue