2012-05-08 Cedric Bail
* Add edje_watch tools to automatically rebuild edc.
+
+2012-05-09 Cedric Bail
+
+ * Fix bug in case of nesting edje_object_signal_emit and edje_object_signal_callback_{add,del}
Fixes:
* Add missing files in the tarballs.
+ * Prevent crash when running nested edje_object_signal_emit with edje_object_signal_callback_{add,del}.
Edje 1.2.0
void *data;
} item_provider;
+ int walking_callbacks;
+
unsigned int dirty : 1;
unsigned int recalc : 1;
- unsigned int walking_callbacks : 1;
unsigned int delete_callbacks : 1;
unsigned int just_added_callbacks : 1;
unsigned int have_objects : 1;
void _edje_textblock_style_all_update(Edje *ed);
void _edje_textblock_style_parse_and_fix(Edje_File *edf);
void _edje_textblock_style_cleanup(Edje_File *edf);
-Edje_File *_edje_cache_file_coll_open(const char *file, const char *coll, int *error_ret, Edje_Part_Collection **edc_ret);
+Edje_File *_edje_cache_file_coll_open(const char *file, const char *coll, int *error_ret, Edje_Part_Collection **edc_ret, Edje *ed);
void _edje_cache_coll_clean(Edje_File *edf);
void _edje_cache_coll_flush(Edje_File *edf);
void _edje_cache_coll_unref(Edje_File *edf, Edje_Part_Collection *edc);
if (ed->just_added_callbacks)
_edje_callbacks_patterns_clean(ed);
- ed->walking_callbacks = 1;
+ ed->walking_callbacks++;
if (ed->callbacks)
{
{
escb->func(escb->data, ed->obj, sig, src);
if (_edje_block_break(ed))
- goto break_prog;
+ break;
}
}
}
break_prog:
- ed->walking_callbacks = 0;
- if ((ed->delete_callbacks) || (ed->just_added_callbacks))
+ ed->walking_callbacks--;
+ if (!ed->walking_callbacks &&
+ ((ed->delete_callbacks) || (ed->just_added_callbacks)))
{
ed->delete_callbacks = 0;
ed->just_added_callbacks = 0;