ug callback that deletes the object that is bing walked for callbacks...

ouch.. fix.


SVN revision: 15932
This commit is contained in:
Carsten Haitzler 2005-07-28 13:39:23 +00:00
parent 7c1ced7036
commit 3c16cf0327
3 changed files with 15 additions and 0 deletions

View File

@ -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;

View File

@ -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);
}
}
}

View File

@ -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);