diff --git a/legacy/edje/src/bin/edje_cc_parse.c b/legacy/edje/src/bin/edje_cc_parse.c index 7af69accb0..28a18877c5 100644 --- a/legacy/edje/src/bin/edje_cc_parse.c +++ b/legacy/edje/src/bin/edje_cc_parse.c @@ -108,6 +108,8 @@ next_token(char *p, char *end, char **new_p, int *delim) { if ((!in_quote) && (*p == '/') && (p < (end - 1)) && (*(p + 1) == '/')) in_comment_ss = 1; + if ((!in_quote) && (*p == '#')) + in_comment_ss = 1; if ((!in_quote) && (*p == '/') && (p < (end - 1)) && (*(p + 1) == '*')) { in_comment_sa = 1; diff --git a/legacy/edje/src/lib/edje_calc.c b/legacy/edje/src/lib/edje_calc.c index 70aa0fff26..0511742ff1 100644 --- a/legacy/edje/src/lib/edje_calc.c +++ b/legacy/edje/src/lib/edje_calc.c @@ -470,8 +470,8 @@ _edje_part_recalc_single(Edje *ed, /* fill */ params->smooth = desc->fill.smooth; params->fill.x = desc->fill.pos_abs_x + (params->w * desc->fill.pos_rel_x); - params->fill.w = desc->fill.abs_x + (params->w * desc->fill.rel_x); params->fill.y = desc->fill.pos_abs_y + (params->h * desc->fill.pos_rel_y); + params->fill.w = desc->fill.abs_x + (params->w * desc->fill.rel_x); params->fill.h = desc->fill.abs_y + (params->h * desc->fill.rel_y); /* colors */ params->color.r = desc->color.r; diff --git a/legacy/edje/src/lib/edje_load.c b/legacy/edje/src/lib/edje_load.c index 136907e8b1..387bf7be4f 100644 --- a/legacy/edje/src/lib/edje_load.c +++ b/legacy/edje/src/lib/edje_load.c @@ -290,6 +290,7 @@ _edje_file_add(Edje *ed) snprintf(buf, sizeof(buf), "collections/%i", id); if (!ef) eet_open(ed->path, EET_FILE_MODE_READ); if (!ef) goto out; + /* collection leaks? */ ed->collection = eet_data_read(ef, _edje_edd_edje_part_collection, buf); @@ -312,6 +313,9 @@ _edje_file_add(Edje *ed) void _edje_file_del(Edje *ed) { + /* segv's sometimes happen after here... */ + /* avoid segv's... but LEAK */ + /* return; */ if (ed->collection) { ed->collection->references--; @@ -333,8 +337,9 @@ _edje_file_del(Edje *ed) Edje_Real_Part *rp; rp = ed->parts->data; + ed->parts = evas_list_remove(ed->parts, rp); _edje_text_part_on_del(ed, rp); - evas_object_del(rp->object); +// evas_object_del(rp->object); if (rp->swallowed_object) { evas_object_event_callback_del(rp->swallowed_object, @@ -347,7 +352,6 @@ _edje_file_del(Edje *ed) if (rp->text.cache.in_str) free(rp->text.cache.in_str); if (rp->text.cache.out_str) free(rp->text.cache.out_str); free(rp); - ed->parts = evas_list_remove(ed->parts, ed->parts->data); } ed->parts = NULL; } @@ -389,7 +393,8 @@ _edje_file_free(Edje_File *edf) Edje_Image_Directory_Entry *ie; ie = edf->image_dir->entries->data; - edf->image_dir->entries = evas_list_remove(edf->image_dir->entries, ie); + edf->image_dir->entries = + evas_list_remove(edf->image_dir->entries, ie); if (ie->entry) free(ie->entry); free(ie); } @@ -402,7 +407,8 @@ _edje_file_free(Edje_File *edf) Edje_Part_Collection_Directory_Entry *ce; ce = edf->collection_dir->entries->data; - edf->collection_dir->entries = evas_list_remove(edf->collection_dir->entries, ce); + edf->collection_dir->entries = + evas_list_remove(edf->collection_dir->entries, ce); if (ce->entry) free(ce->entry); free(ce); } @@ -454,11 +460,14 @@ _edje_collection_free(Edje_Part_Collection *ec) ep->other_desc = evas_list_remove(ep->other_desc, desc); _edje_collection_free_part_description_free(desc); } + free(ep); } if (ec->prog_cache.no_matches) evas_hash_free(ec->prog_cache.no_matches); if (ec->prog_cache.matches) { - evas_hash_foreach(ec->prog_cache.matches, _edje_collection_free_prog_cache_matches_free_cb, NULL); + evas_hash_foreach(ec->prog_cache.matches, + _edje_collection_free_prog_cache_matches_free_cb, + NULL); evas_hash_free(ec->prog_cache.matches); } free(ec); diff --git a/legacy/edje/src/lib/edje_main.c b/legacy/edje/src/lib/edje_main.c index 949952f230..95f31d4a59 100644 --- a/legacy/edje/src/lib/edje_main.c +++ b/legacy/edje/src/lib/edje_main.c @@ -36,7 +36,9 @@ _edje_del(Edje *ed) { _edje_file_del(ed); if (ed->path) free(ed->path); + ed->path = NULL; if (ed->part) free(ed->part); + ed->part = NULL; while (ed->callbacks) { Edje_Signal_Callback *escb; diff --git a/legacy/edje/src/lib/edje_private.h b/legacy/edje/src/lib/edje_private.h index 90f469dabe..dd3a6bdbcc 100644 --- a/legacy/edje/src/lib/edje_private.h +++ b/legacy/edje/src/lib/edje_private.h @@ -233,11 +233,12 @@ struct _Edje_Part Evas_List *other_desc; /* other possible descriptors */ struct { char x; /* can u click & drag this bit in x dir */ - int step_x; /* drag jumps n pixels (0 = no limit) */ - int count_x; /* drag area divided by n (0 = no limit) */ - char y; /* can u click & drag this bit in y dir */ + + int step_x; /* drag jumps n pixels (0 = no limit) */ int step_y; /* drag jumps n pixels (0 = no limit) */ + + int count_x; /* drag area divided by n (0 = no limit) */ int count_y; /* drag area divided by n (0 = no limit) */ int confine_id; /* dragging within this bit, -1 = no */ diff --git a/legacy/edje/src/lib/edje_program.c b/legacy/edje/src/lib/edje_program.c index 1fe71c509e..eb1abc2b87 100644 --- a/legacy/edje/src/lib/edje_program.c +++ b/legacy/edje/src/lib/edje_program.c @@ -448,7 +448,7 @@ _edje_emit(Edje *ed, char *sig, char *src) recursions++; _edje_ref(ed); _edje_freeze(ed); - printf("EMIT \"%s\" \"%s\"\n", sig, src); +// printf("EMIT \"%s\" \"%s\"\n", sig, src); ee = calloc(1, sizeof(Edje_Emission)); if (!ee) { diff --git a/legacy/edje/src/lib/edje_smart.c b/legacy/edje/src/lib/edje_smart.c index df939ae79b..c8abf17362 100644 --- a/legacy/edje/src/lib/edje_smart.c +++ b/legacy/edje/src/lib/edje_smart.c @@ -57,7 +57,6 @@ _edje_smart_add(Evas_Object * obj) if (!ed) return; evas_object_smart_data_set(obj, ed); ed->obj = obj; - evas_object_smart_member_add(ed->clipper, ed->obj); _edje_edjes = evas_list_append(_edje_edjes, obj); } diff --git a/legacy/edje/src/lib/edje_util.c b/legacy/edje/src/lib/edje_util.c index a9c82d89bb..f88fbf6850 100644 --- a/legacy/edje/src/lib/edje_util.c +++ b/legacy/edje/src/lib/edje_util.c @@ -249,6 +249,7 @@ edje_object_part_swallow(Evas_Object *obj, const char *part, Evas_Object *obj_sw if (!rp) return; if (rp->swallowed_object) { + evas_object_smart_member_del(rp->swallowed_object); evas_object_event_callback_del(rp->swallowed_object, EVAS_CALLBACK_FREE, _edje_object_part_swallow_free_cb); @@ -257,6 +258,7 @@ edje_object_part_swallow(Evas_Object *obj, const char *part, Evas_Object *obj_sw } if (!obj_swallow) return; rp->swallowed_object = obj_swallow; + evas_object_smart_member_add(rp->swallowed_object, ed->obj); evas_object_clip_set(rp->swallowed_object, ed->clipper); if (evas_object_layer_get(rp->swallowed_object) != ed->layer) evas_object_layer_set(rp->swallowed_object, ed->layer); @@ -357,6 +359,7 @@ edje_object_part_unswallow(Evas_Object *obj, Evas_Object *obj_swallow) rp = l->data; if (rp->swallowed_object == obj_swallow) { + evas_object_smart_member_del(rp->swallowed_object); evas_object_clip_unset(rp->swallowed_object); rp->swallowed_object = NULL; rp->swallow_params.min.w = 0;