[Pkg-e-commits] [SCM] Enlightenment DR17 graphical layout and animation library branch, upstream-vcs, updated. 5cce53e1665d23ed6ab0e9261fa8ebc485474818
davemds
davemds at alioth.debian.org
Mon Mar 10 15:15:33 UTC 2008
The following commit has been merged in the upstream-vcs branch:
commit 5cce53e1665d23ed6ab0e9261fa8ebc485474818
Author: davemds <davemds>
Date: Sat Mar 8 23:11:32 2008 +0000
* fixed strings free
diff --git a/src/lib/edje_edit.c b/src/lib/edje_edit.c
index 4a8804c..00a6326 100644
--- a/src/lib/edje_edit.c
+++ b/src/lib/edje_edit.c
@@ -216,11 +216,10 @@ _edje_real_part_free(Edje_Real_Part *rp)
rp->swallowed_object = NULL;
}
- /*if (rp->text.text) evas_stringshare_del(rp->text.text);
+ if (rp->text.text) evas_stringshare_del(rp->text.text);
if (rp->text.font) evas_stringshare_del(rp->text.font);
if (rp->text.cache.in_str) evas_stringshare_del(rp->text.cache.in_str);
if (rp->text.cache.out_str) evas_stringshare_del(rp->text.cache.out_str);
- TODO FIXME */
if (rp->custom.description)
{
@@ -548,6 +547,18 @@ _edje_fix_parts_id(Edje *ed)
//printf("\n");
}
+static void
+_edje_if_string_free(Edje *ed, const char *str)
+{
+ Eet_Dictionary *dict;
+
+ if (!ed || !str) return;
+
+ dict = eet_dictionary_get(ed->file->ef);
+ if (eet_dictionary_string_check(dict ,str)) return;
+ evas_stringshare_del(str);
+ str = NULL;
+}
/*****************/
/* GENERAL API */
/*****************/
@@ -636,7 +647,7 @@ edje_edit_group_add(Evas_Object *obj, const char *name)
/* Init Edje_Part_Collection */
pc->id = id;
- pc->references = 1; //TODO i'm not shure about this (maybe 1 ?)
+ pc->references = 1; //TODO i'm not shure about this (maybe set to 0 ?)
pc->programs = NULL;
pc->parts = NULL;
pc->data = NULL;
@@ -764,11 +775,15 @@ edje_edit_group_name_set(Evas_Object *obj, const char *new_name)
Edje_Part_Collection_Directory_Entry *pce = l->data;
if (pc->id == pce->id)
{
- //if (pce->entry) free(pce->entry); //TODO Also this cause segv
- pce->entry = mem_strdup(new_name);
-
- //ed->file->collection_hash = evas_hash_del(ed->file->collection_hash, pc->entry, edc);
- //ed->file->collection_hash = evas_hash_add(ed->file->collection_hash, name, pc);
+ ed->file->collection_hash = evas_hash_del(ed->file->collection_hash,
+ pce->entry, NULL);
+ ed->file->collection_hash = evas_hash_add(ed->file->collection_hash,
+ new_name, pc);
+
+ //if (pce->entry && //TODO Also this cause segv
+ // !eet_dictionary_string_check(eet_dictionary_get(ed->file->ef), pce->entry))
+ // evas_stringshare_del(pce->entry);
+ pce->entry = evas_stringshare_add(new_name);
return;
}
@@ -871,7 +886,7 @@ edje_edit_part_name_set(Evas_Object *obj, const char* part, const char* new_name
printf("Set name of part: %s [new name: %s]\n", part, new_name);
- //if (rp->part->name && ed->file->free_strings) evas_stringshare_del(rp->part->name); TODO FIXME
+ _edje_if_string_free(ed, rp->part->name);
rp->part->name = (char *)evas_stringshare_add(new_name);
return 1;
@@ -1065,7 +1080,7 @@ edje_edit_part_del(Evas_Object *obj, const char* part)
_edje_fix_parts_id(ed);
/* Free Edje_Part and all descriptions */
- //if (ep->name && ed->file->free_strings) evas_stringshare_del(ep->name); TODO FIXME
+ _edje_if_string_free(ed, ep->name);
if (ep->default_desc)
{
_edje_collection_free_part_description_free(ep->default_desc);
@@ -1327,12 +1342,7 @@ edje_edit_part_source_set(Evas_Object *obj, const char *part, const char *source
printf("Set source for part: %s [source: %s]\n", part, source);
- if (rp->part->source)
- {
- //if (ed->file->free_strings)
- // evas_stringshare_del(rp->part->source); TODO FIXME
- rp->part->source = NULL;
- }
+ _edje_if_string_free(ed, rp->part->source);
if (source)
rp->part->source = evas_stringshare_add(source);
@@ -1412,15 +1422,15 @@ edje_edit_state_name_set(Evas_Object *obj, const char *part, const char *state,
!strcmp(epr->state, pd->state.name) &&
pd->state.value == epr->value)
{
- //TODO free epr->state
- epr->state = mem_strdup(new_name);
+ _edje_if_string_free(ed, epr->state);
+ epr->state = evas_stringshare_add(new_name);
epr->value = value;
}
}
}
/* set name */
- //if (pd->state.name && ed->file->free_strings) evas_stringshare_del(pd->state.name); TODO FIXME
+ _edje_if_string_free(ed, pd->state.name);
pd->state.name = (char *)evas_stringshare_add(new_name);
/* set value */
pd->state.value = value;
@@ -2070,9 +2080,7 @@ edje_edit_state_text_set(Evas_Object *obj, const char *part, const char *state,
if (!text) return;
- //if (pd->text.text && ed->file->free_strings)
- // evas_stringshare_del(pd->text.text); TODO FIXME
-
+ _edje_if_string_free(ed, pd->text.text);
pd->text.text = (char *)evas_stringshare_add(text);
edje_object_calc_force(obj);
@@ -2297,7 +2305,7 @@ edje_edit_state_font_set(Evas_Object *obj, const char *part, const char *state,
GET_PD_OR_RETURN()
printf("SET FONT of state: %s [%s]\n", state, font);
- //if (pd->text.font && ed->file->free_strings) evas_stringshare_del(pd->text.font); TODO FIXME
+ _edje_if_string_free(ed, pd->text.font);
pd->text.font = (char *)evas_stringshare_add(font);
edje_object_calc_force(obj);
@@ -2656,14 +2664,12 @@ edje_edit_program_del(Evas_Object *obj, const char *prog)
pc->programs = evas_list_remove(pc->programs, epr);
//Free Edje_Program
- /*if (ed->file->free_strings)
- {
- if (epr->name) evas_stringshare_del(epr->name);
- if (epr->signal) evas_stringshare_del(epr->signal);
- if (epr->source) evas_stringshare_del(epr->source);
- if (epr->state) evas_stringshare_del(epr->state);
- if (epr->state2) evas_stringshare_del(epr->state2);
- } TODO FIXME*/
+ _edje_if_string_free(ed, epr->name);
+ _edje_if_string_free(ed, epr->signal);
+ _edje_if_string_free(ed, epr->source);
+ _edje_if_string_free(ed, epr->state);
+ _edje_if_string_free(ed, epr->state2);
+
while (epr->targets)
{
Edje_Program_Target *prt;
@@ -2785,7 +2791,7 @@ edje_edit_program_name_set(Evas_Object *obj, const char *prog, const char* new_n
printf("SET NAME for program: %s [new name: %s]\n", prog, new_name);
- //if (epr->name && ed->file->free_strings) evas_stringshare_del(epr->name); TODO FIXME
+ _edje_if_string_free(ed, epr->name);
epr->name = evas_stringshare_add(new_name);
return 1;
@@ -2810,7 +2816,7 @@ edje_edit_program_source_set(Evas_Object *obj, const char *prog, const char *sou
printf("SET SOURCE for program: %s [%s]\n", prog, source);
- //if (epr->source && ed->file->free_strings) evas_stringshare_del(epr->source); TODO FIXME
+ _edje_if_string_free(ed, epr->source);
epr->source = evas_stringshare_add(source);
//Update patterns
@@ -2840,7 +2846,7 @@ edje_edit_program_signal_set(Evas_Object *obj, const char *prog, const char *sig
printf("SET SIGNAL for program: %s [%s]\n", prog, signal);
- //if (epr->signal && ed->file->free_strings) evas_stringshare_del(epr->signal); TODO FIXME
+ _edje_if_string_free(ed, epr->signal);
epr->signal = evas_stringshare_add(signal);
//Update patterns
@@ -2869,7 +2875,7 @@ edje_edit_program_state_set(Evas_Object *obj, const char *prog, const char *stat
printf("SET STATE for program: %s\n", prog);
- //if (epr->state && ed->file->free_strings) evas_stringshare_del(epr->state); TODO FIXME
+ _edje_if_string_free(ed, epr->state);
epr->state = evas_stringshare_add(state);
return 1;
@@ -2893,7 +2899,7 @@ edje_edit_program_state2_set(Evas_Object *obj, const char *prog, const char *sta
printf("SET STATE2 for program: %s\n", prog);
- //if (epr->state2 && ed->file->free_strings) evas_stringshare_del(epr->state2); TODO FIXME
+ _edje_if_string_free(ed, epr->state2);
epr->state2 = evas_stringshare_add(state2);
return 1;
--
Enlightenment DR17 graphical layout and animation library
More information about the Pkg-e-commits
mailing list