I discovered today that some evas objects never get destroyed when they have 0 refcount (evas_object_refs) and evas_object_del is called on them.
This is also extremely simple to reproduce:
- Menu->Desktop->Add bryce
- Right click the clock gadget
- Dismiss popup (press escape or click desktop)
- Popup is never destroyed
The mechanism for managing this popup is used many places in Enlightenment, and it seems to work as expected for the rest of the cases; evas_object_ref is called on hide to preserve the object while it animates, and then evas_object_unref is called at the end of _e_comp_object_util_done_defer to remove the final ref after the object is fully hidden.
In this particular case, however, the eo obj->refcount is still >0 while the evas object refcount == 0, and the object is never destroyed.
EDIT: also I tested this with a version of EFL from early May and the issue is still there, so I guess this is a longstanding internal issue