Revert "canvas vg: fix up a regression error by file_load(),"

This reverts commit d696a12ac7.
This commit is contained in:
Hermet Park 2019-03-11 20:50:51 +09:00
parent d696a12ac7
commit fd01eec0f5
3 changed files with 6 additions and 32 deletions

View File

@ -244,37 +244,6 @@ _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)
{
@ -286,14 +255,17 @@ _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,
EINA_TRUE);
evas_object_change(eo_obj, obj);
evas_cache_vg_entry_del(old_entry);
return 0;
}
@ -305,6 +277,7 @@ _efl_canvas_vg_object_efl_file_unload(Eo *eo_obj, Efl_Canvas_Vg_Object_Data *pd)
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);
eina_stringshare_del(pd->key);
pd->vg_entry = NULL;
}

View File

@ -84,7 +84,6 @@ 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; }

View File

@ -51,6 +51,8 @@ struct _Efl_Canvas_Vg_Object_Data
double align_x, align_y;
Efl_Canvas_Vg_Fill_Mode fill_mode;
int frame_idx;
Eina_File *file;
Eina_Stringshare *key;
int cached_frame_idx;
Eina_Bool changed : 1;