forked from enlightenment/enlightenment
e utils - delayed dia del - try avoid multiple entries
This commit is contained in:
parent
59753eab23
commit
5d3f6ad594
|
@ -727,22 +727,38 @@ e_util_dir_check(const char *dir)
|
||||||
static Eina_Array *_delay_del_array = NULL;
|
static Eina_Array *_delay_del_array = NULL;
|
||||||
static Ecore_Idle_Enterer *_delay_del_idler = NULL;
|
static Ecore_Idle_Enterer *_delay_del_idler = NULL;
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
_e_util_del_array_contains(E_Object *obj)
|
||||||
|
{
|
||||||
|
unsigned long c, i;
|
||||||
|
|
||||||
|
if (!_delay_del_array) return EINA_FALSE;
|
||||||
|
|
||||||
|
c = eina_array_count_get(_delay_del_array);
|
||||||
|
for (i = 0; i < c; i++)
|
||||||
|
{
|
||||||
|
if (eina_array_data_get(_delay_del_array, i) == obj) return EINA_TRUE;
|
||||||
|
}
|
||||||
|
return EINA_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_e_util_cb_delayed_del(void *data EINA_UNUSED)
|
_e_util_cb_delayed_del(void *data EINA_UNUSED)
|
||||||
{
|
{
|
||||||
_delay_del_idler = NULL;
|
_delay_del_idler = NULL;
|
||||||
|
|
||||||
while (_delay_del_array)
|
while (_delay_del_array)
|
||||||
{
|
{
|
||||||
Eina_Array *arr = _delay_del_array;
|
Eina_Array *arr = _delay_del_array;
|
||||||
Eina_Iterator *itr = eina_array_iterator_new(arr);
|
unsigned long c, i;
|
||||||
void *ptr;
|
|
||||||
|
|
||||||
_delay_del_array = NULL;
|
_delay_del_array = NULL;
|
||||||
while (eina_iterator_next(itr, &ptr))
|
c = eina_array_count_get(arr);
|
||||||
|
for (i = 0; i < c; i++)
|
||||||
{
|
{
|
||||||
if (ptr) e_object_del(E_OBJECT(ptr));
|
E_Object *obj = eina_array_data_get(arr, i);
|
||||||
|
if (obj) e_object_del(obj);
|
||||||
}
|
}
|
||||||
eina_iterator_free(itr);
|
|
||||||
eina_array_free(arr);
|
eina_array_free(arr);
|
||||||
}
|
}
|
||||||
return ECORE_CALLBACK_CANCEL;
|
return ECORE_CALLBACK_CANCEL;
|
||||||
|
@ -769,6 +785,8 @@ e_util_defer_object_del(E_Object *obj)
|
||||||
if (stopping)
|
if (stopping)
|
||||||
e_object_del(obj);
|
e_object_del(obj);
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
if (!_e_util_del_array_contains(obj))
|
||||||
{
|
{
|
||||||
if (!_delay_del_array)
|
if (!_delay_del_array)
|
||||||
{
|
{
|
||||||
|
@ -784,6 +802,7 @@ e_util_defer_object_del(E_Object *obj)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
E_API const char *
|
E_API const char *
|
||||||
e_util_winid_str_get(Ecore_X_Window win)
|
e_util_winid_str_get(Ecore_X_Window win)
|
||||||
|
|
Loading…
Reference in New Issue