forked from enlightenment/efl
ug callback that deletes the object that is bing walked for callbacks...
ouch.. fix. SVN revision: 15932
This commit is contained in:
parent
7c1ced7036
commit
3c16cf0327
|
@ -75,6 +75,12 @@ _edje_add(Evas_Object *obj)
|
|||
void
|
||||
_edje_del(Edje *ed)
|
||||
{
|
||||
if (ed->processing_messages)
|
||||
{
|
||||
ed->delete_me = 1;
|
||||
return;
|
||||
}
|
||||
_edje_message_del(ed);
|
||||
_edje_file_del(ed);
|
||||
if (ed->path) free(ed->path);
|
||||
ed->path = NULL;
|
||||
|
|
|
@ -592,11 +592,19 @@ _edje_message_queue_process(void)
|
|||
while (tmp_msgq)
|
||||
{
|
||||
Edje_Message *em;
|
||||
Edje *ed;
|
||||
|
||||
em = tmp_msgq->data;
|
||||
ed = em->edje;
|
||||
ed->processing_messages++;
|
||||
tmp_msgq = evas_list_remove_list(tmp_msgq, tmp_msgq);
|
||||
_edje_message_process(em);
|
||||
_edje_message_free(em);
|
||||
ed->processing_messages--;
|
||||
if (ed->processing_messages == 0)
|
||||
{
|
||||
if (ed->delete_me) _edje_del(ed);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -473,6 +473,7 @@ struct _Edje
|
|||
void *data;
|
||||
} text_change;
|
||||
|
||||
int processing_messages;
|
||||
struct {
|
||||
int num;
|
||||
void (*func) (void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *msg);
|
||||
|
|
Loading…
Reference in New Issue