jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=4e811bed17a33b78b13df2a479290caf49930ceb

commit 4e811bed17a33b78b13df2a479290caf49930ceb
Author: Jean-Philippe Andre <jp.an...@samsung.com>
Date:   Wed Oct 5 20:53:26 2016 +0900

    eio_model: Provide main loop even without parent
    
    An eio model (and I believe most other models as well, in fact)
    require a Efl.Loop.User as parent in order for efl future/promises
    to work. This adds a fallback code directly inside eio model. The
    alternative was to parent and efl_del all models in fileselector.
    
    See T4686
---
 src/lib/eio/eio_model.c  | 14 +++++++++++++-
 src/lib/eio/eio_model.eo |  1 +
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/src/lib/eio/eio_model.c b/src/lib/eio/eio_model.c
index 56395b7..64a7213 100644
--- a/src/lib/eio/eio_model.c
+++ b/src/lib/eio/eio_model.c
@@ -703,7 +703,6 @@ _eio_model_efl_object_destructor(Eo *obj , Eio_Model_Data 
*priv)
    efl_destructor(efl_super(obj, MY_CLASS));
 }
 
-
 static Eo *
 _eio_model_efl_object_parent_get(Eo *obj , Eio_Model_Data *priv)
 {
@@ -723,4 +722,17 @@ _eio_model_efl_object_parent_get(Eo *obj , Eio_Model_Data 
*priv)
      }
    return model;
 }
+
+EOLIAN static Eo *
+_eio_model_efl_object_provider_find(Eo *obj, Eio_Model_Data *priv EINA_UNUSED, 
const Efl_Class *klass)
+{
+   Eo *provider = efl_provider_find(efl_super(obj, MY_CLASS), klass);
+
+   // Provide main loop even if we don't have a loop user parent
+   if (!provider && (klass == EFL_LOOP_CLASS) && eina_main_loop_is())
+     return ecore_main_loop_get();
+
+   return provider;
+}
+
 #include "eio_model.eo.c"
diff --git a/src/lib/eio/eio_model.eo b/src/lib/eio/eio_model.eo
index 5cbde59..bc4d4b6 100644
--- a/src/lib/eio/eio_model.eo
+++ b/src/lib/eio/eio_model.eo
@@ -37,6 +37,7 @@ class Eio.Model (Efl.Object, Efl.Model)
       Efl.Object.constructor;
       Efl.Object.destructor;
       Efl.Object.parent.get;
+      Efl.Object.provider_find;
       Efl.Model.properties.get;
       Efl.Model.property_set;
       Efl.Model.property_get;

-- 


Reply via email to