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
|
void
|
||||||
_edje_del(Edje *ed)
|
_edje_del(Edje *ed)
|
||||||
{
|
{
|
||||||
|
if (ed->processing_messages)
|
||||||
|
{
|
||||||
|
ed->delete_me = 1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_edje_message_del(ed);
|
||||||
_edje_file_del(ed);
|
_edje_file_del(ed);
|
||||||
if (ed->path) free(ed->path);
|
if (ed->path) free(ed->path);
|
||||||
ed->path = NULL;
|
ed->path = NULL;
|
||||||
|
|
|
@ -592,11 +592,19 @@ _edje_message_queue_process(void)
|
||||||
while (tmp_msgq)
|
while (tmp_msgq)
|
||||||
{
|
{
|
||||||
Edje_Message *em;
|
Edje_Message *em;
|
||||||
|
Edje *ed;
|
||||||
|
|
||||||
em = tmp_msgq->data;
|
em = tmp_msgq->data;
|
||||||
|
ed = em->edje;
|
||||||
|
ed->processing_messages++;
|
||||||
tmp_msgq = evas_list_remove_list(tmp_msgq, tmp_msgq);
|
tmp_msgq = evas_list_remove_list(tmp_msgq, tmp_msgq);
|
||||||
_edje_message_process(em);
|
_edje_message_process(em);
|
||||||
_edje_message_free(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;
|
void *data;
|
||||||
} text_change;
|
} text_change;
|
||||||
|
|
||||||
|
int processing_messages;
|
||||||
struct {
|
struct {
|
||||||
int num;
|
int num;
|
||||||
void (*func) (void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *msg);
|
void (*func) (void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *msg);
|
||||||
|
|
Loading…
Reference in New Issue