forked from enlightenment/efl
eio: remove unecessary use of weak reference.
There is no point in keeping a pointer to the main loop now that we are using efl_future_then. This resolve potential bug with leftover dangling weak reference as efl_future_then do require a free case otherwise. Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de> Differential Revision: https://phab.enlightenment.org/D8374
This commit is contained in:
parent
3bbaf71b68
commit
4d1620f3f0
|
@ -434,22 +434,11 @@ _build_delay(Efl_Io_Model *model)
|
||||||
.data = eina_list_last(delayed_queue));
|
.data = eina_list_last(delayed_queue));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
_eio_build_mime_clean(Efl_Io_Model_Data *pd)
|
|
||||||
{
|
|
||||||
efl_wref_del(pd->loop, &pd->loop);
|
|
||||||
pd->loop = NULL;
|
|
||||||
pd->request.mime = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Value
|
static Eina_Value
|
||||||
_eio_build_mime_now(Eo *model, void *data, const Eina_Value v)
|
_eio_build_mime_now(Eo *model, void *data, const Eina_Value v)
|
||||||
{
|
{
|
||||||
Efl_Io_Model_Data *pd = data;
|
Efl_Io_Model_Data *pd = data;
|
||||||
|
|
||||||
if (v.type == EINA_VALUE_TYPE_ERROR) goto on_error;
|
|
||||||
if (!pd->loop) goto on_error;
|
|
||||||
|
|
||||||
// Make sure that we are not over consuming time in the main loop
|
// Make sure that we are not over consuming time in the main loop
|
||||||
if (!delayed_one &&
|
if (!delayed_one &&
|
||||||
(delayed_queue || ecore_time_get() - ecore_loop_time_get() > 0.004))
|
(delayed_queue || ecore_time_get() - ecore_loop_time_get() > 0.004))
|
||||||
|
@ -462,16 +451,9 @@ _eio_build_mime_now(Eo *model, void *data, const Eina_Value v)
|
||||||
|
|
||||||
pd->mime_type = efreet_mime_type_get(pd->path);
|
pd->mime_type = efreet_mime_type_get(pd->path);
|
||||||
|
|
||||||
_eio_build_mime_clean(pd);
|
|
||||||
|
|
||||||
efl_model_properties_changed(model, "mime_type");
|
efl_model_properties_changed(model, "mime_type");
|
||||||
delayed_one = EINA_TRUE;
|
delayed_one = EINA_TRUE;
|
||||||
|
|
||||||
return v;
|
|
||||||
|
|
||||||
on_error:
|
|
||||||
_eio_build_mime_clean(pd);
|
|
||||||
|
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -481,9 +463,7 @@ _eio_build_mime(const Efl_Object *model, Efl_Io_Model_Data *pd)
|
||||||
if (pd->mime_type) return ;
|
if (pd->mime_type) return ;
|
||||||
if (pd->request.mime) return ;
|
if (pd->request.mime) return ;
|
||||||
|
|
||||||
efl_wref_add(efl_loop_get(model), &pd->loop);
|
pd->request.mime = efl_future_then(model, efl_loop_job(efl_loop_get(model)),
|
||||||
|
|
||||||
pd->request.mime = efl_future_then(model, efl_loop_job(pd->loop),
|
|
||||||
.success = _eio_build_mime_now,
|
.success = _eio_build_mime_now,
|
||||||
.data = pd);
|
.data = pd);
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,7 +35,6 @@ struct _Efl_Io_Model_Info
|
||||||
|
|
||||||
struct _Efl_Io_Model_Data
|
struct _Efl_Io_Model_Data
|
||||||
{
|
{
|
||||||
Efl_Loop *loop;
|
|
||||||
Efl_Io_Model *self;
|
Efl_Io_Model *self;
|
||||||
|
|
||||||
Eina_Stringshare *path;
|
Eina_Stringshare *path;
|
||||||
|
|
Loading…
Reference in New Issue