forked from enlightenment/efl
no need to alloc path and part strings if its cached and thus shared
anyway... so detect and re-cycle :) SVN revision: 18677
This commit is contained in:
parent
aa94c430d3
commit
e5856869df
|
@ -39,10 +39,18 @@ edje_object_file_set(Evas_Object *obj, const char *file, const char *part)
|
||||||
|
|
||||||
_edje_file_del(ed);
|
_edje_file_del(ed);
|
||||||
|
|
||||||
if (ed->path) free(ed->path);
|
if (ed->path)
|
||||||
ed->path = strdup(file);
|
{
|
||||||
if (ed->part) free(ed->part);
|
if (!ed->no_free_path) free(ed->path);
|
||||||
ed->part = strdup(part);
|
}
|
||||||
|
if (ed->part)
|
||||||
|
{
|
||||||
|
if (!ed->no_free_part) free(ed->part);
|
||||||
|
}
|
||||||
|
ed->path = file;
|
||||||
|
ed->part = part;
|
||||||
|
// ed->path = strdup(file);
|
||||||
|
// ed->part = strdup(part);
|
||||||
|
|
||||||
ed->load_error = EDJE_LOAD_ERROR_NONE;
|
ed->load_error = EDJE_LOAD_ERROR_NONE;
|
||||||
_edje_file_add(ed);
|
_edje_file_add(ed);
|
||||||
|
@ -137,6 +145,10 @@ edje_object_file_set(Evas_Object *obj, const char *file, const char *part)
|
||||||
if (!rp)
|
if (!rp)
|
||||||
{
|
{
|
||||||
ed->load_error = EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED;
|
ed->load_error = EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED;
|
||||||
|
ed->no_free_path = 0;
|
||||||
|
ed->no_free_part = 0;
|
||||||
|
ed->path = strdup(ed->path);
|
||||||
|
ed->part = strdup(ed->part);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
rp->part = ep;
|
rp->part = ep;
|
||||||
|
@ -318,12 +330,25 @@ edje_object_file_set(Evas_Object *obj, const char *file, const char *part)
|
||||||
_edje_unref(ed);
|
_edje_unref(ed);
|
||||||
ed->load_error = EDJE_LOAD_ERROR_NONE;
|
ed->load_error = EDJE_LOAD_ERROR_NONE;
|
||||||
_edje_emit(ed, "load", NULL);
|
_edje_emit(ed, "load", NULL);
|
||||||
|
ed->path = ed->file->path;
|
||||||
|
ed->part = ed->collection->part;
|
||||||
|
ed->no_free_path = 1;
|
||||||
|
ed->no_free_part = 1;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
ed->no_free_path = 0;
|
||||||
|
ed->no_free_part = 0;
|
||||||
|
ed->path = strdup(ed->path);
|
||||||
|
ed->part = strdup(ed->part);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
/* we should never get here anyway */
|
||||||
|
ed->no_free_path = 0;
|
||||||
|
ed->no_free_part = 0;
|
||||||
|
ed->path = NULL;
|
||||||
|
ed->part = NULL;
|
||||||
ed->load_error = EDJE_LOAD_ERROR_NONE;
|
ed->load_error = EDJE_LOAD_ERROR_NONE;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -82,10 +82,16 @@ _edje_del(Edje *ed)
|
||||||
}
|
}
|
||||||
_edje_message_del(ed);
|
_edje_message_del(ed);
|
||||||
_edje_file_del(ed);
|
_edje_file_del(ed);
|
||||||
if (ed->path) free(ed->path);
|
if (ed->path)
|
||||||
ed->path = NULL;
|
{
|
||||||
if (ed->part) free(ed->part);
|
if (!ed->no_free_path) free(ed->path);
|
||||||
ed->part = NULL;
|
ed->path = NULL;
|
||||||
|
}
|
||||||
|
if (ed->part)
|
||||||
|
{
|
||||||
|
if (!ed->no_free_part) free(ed->part);
|
||||||
|
ed->part = NULL;
|
||||||
|
}
|
||||||
if ((ed->actions) || (ed->pending_actions))
|
if ((ed->actions) || (ed->pending_actions))
|
||||||
{
|
{
|
||||||
_edje_animators = evas_list_remove(_edje_animators, ed);
|
_edje_animators = evas_list_remove(_edje_animators, ed);
|
||||||
|
|
|
@ -474,6 +474,8 @@ struct _Edje
|
||||||
unsigned short walking_actions : 1;
|
unsigned short walking_actions : 1;
|
||||||
unsigned short block_break : 1;
|
unsigned short block_break : 1;
|
||||||
unsigned short delete_me : 1;
|
unsigned short delete_me : 1;
|
||||||
|
unsigned short no_free_path : 1;
|
||||||
|
unsigned short no_free_part : 1;
|
||||||
double paused_at;
|
double paused_at;
|
||||||
Evas *evas; /* the Evas this Edje belongs to */
|
Evas *evas; /* the Evas this Edje belongs to */
|
||||||
Evas_Object *obj; /* the smart object */
|
Evas_Object *obj; /* the smart object */
|
||||||
|
|
Loading…
Reference in New Issue