jpeg pushed a commit to branch master.

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

commit bcb251e6abc18843e60debaef995badf02e14cc0
Author: Jean-Philippe Andre <[email protected]>
Date:   Tue Dec 13 13:38:16 2016 +0900

    evas: Make evas object loop users
    
    This makes efl_loop_get() work on evas objects, returning the
    main loop as expected. Also make the loop a property of the
    Loop_User class (shouldn't it be called Efl.Loop.User instead?)
---
 src/lib/ecore/efl_loop_user.eo           | 11 ++++++++---
 src/lib/evas/canvas/efl_canvas_object.eo |  3 ++-
 src/lib/evas/canvas/evas_canvas.eo       |  4 +++-
 src/lib/evas/canvas/evas_main.c          |  6 ++++++
 src/lib/evas/canvas/evas_object_main.c   |  9 +++++++++
 5 files changed, 28 insertions(+), 5 deletions(-)

diff --git a/src/lib/ecore/efl_loop_user.eo b/src/lib/ecore/efl_loop_user.eo
index f126c57..679bfc4 100644
--- a/src/lib/ecore/efl_loop_user.eo
+++ b/src/lib/ecore/efl_loop_user.eo
@@ -5,9 +5,14 @@ class Efl.Loop_User (Efl.Object)
      only allowing parent that provide such interface or NULL.]]
    eo_prefix: efl_loop;
    methods {
-      loop_get {
-        [[Get loop]]
-         return: Efl.Loop; [[Efl loop]]
+      @property loop {
+         [[The loop to which this object belongs to.]]
+         get {
+            [[Get a handle to the loop.]]
+         }
+         values {
+            loop: Efl.Loop; [[Efl loop]]
+         }
       }
    }
    implements {
diff --git a/src/lib/evas/canvas/efl_canvas_object.eo 
b/src/lib/evas/canvas/efl_canvas_object.eo
index 24a706b..f0d8e67 100644
--- a/src/lib/evas/canvas/efl_canvas_object.eo
+++ b/src/lib/evas/canvas/efl_canvas_object.eo
@@ -3,7 +3,7 @@ import efl_text_types;
 
 abstract Efl.Canvas.Object (Efl.Object, Efl.Gfx, Efl.Gfx.Stack, Efl.Animator,
                             Efl.Input.Interface, Efl.Gfx.Size.Hint,
-                            Efl.Gfx.Map)
+                            Efl.Gfx.Map, Efl.Loop_User)
 {
    [[Efl canvas object abstract class]]
    legacy_prefix: evas_object;
@@ -670,5 +670,6 @@ abstract Efl.Canvas.Object (Efl.Object, Efl.Gfx, 
Efl.Gfx.Stack, Efl.Animator,
       Efl.Gfx.Map.map_enable.get;
       Efl.Input.Interface.seat_event_filter.set;
       Efl.Input.Interface.seat_event_filter.get;
+      Efl.Loop_User.loop.get;
    }
 }
diff --git a/src/lib/evas/canvas/evas_canvas.eo 
b/src/lib/evas/canvas/evas_canvas.eo
index 9a2d62b..e5de53e 100644
--- a/src/lib/evas/canvas/evas_canvas.eo
+++ b/src/lib/evas/canvas/evas_canvas.eo
@@ -1,7 +1,8 @@
 import evas_types;
 import efl_input_types;
 
-class Evas.Canvas (Efl.Object, Efl.Canvas, Efl.Animator, Efl.Input.Interface)
+class Evas.Canvas (Efl.Object, Efl.Canvas, Efl.Animator, Efl.Input.Interface,
+                   Efl.Loop_User)
 {
    [[Evas canvas class]]
    legacy_prefix: evas;
@@ -1317,6 +1318,7 @@ class Evas.Canvas (Efl.Object, Efl.Canvas, Efl.Animator, 
Efl.Input.Interface)
       Efl.Object.event_thaw;
       Efl.Object.event_freeze;
       Efl.Object.provider_find;
+      Efl.Loop_User.loop.get;
    }
    events {
       render,flush,pre @beta; [[Called on render flush pre phase]]
diff --git a/src/lib/evas/canvas/evas_main.c b/src/lib/evas/canvas/evas_main.c
index f4ae8bf..c419631 100644
--- a/src/lib/evas/canvas/evas_main.c
+++ b/src/lib/evas/canvas/evas_main.c
@@ -811,6 +811,12 @@ _evas_canvas_efl_object_provider_find(Eo *eo_e, 
Evas_Public_Data *e EINA_UNUSED,
    return efl_provider_find(efl_super(eo_e, MY_CLASS), klass);
 }
 
+EOLIAN static Efl_Loop *
+_evas_canvas_efl_loop_user_loop_get(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e 
EINA_UNUSED)
+{
+   return ecore_main_loop_get();
+}
+
 Ector_Surface *
 evas_ector_get(Evas_Public_Data *e)
 {
diff --git a/src/lib/evas/canvas/evas_object_main.c 
b/src/lib/evas/canvas/evas_object_main.c
index b027998..a4b67d8 100644
--- a/src/lib/evas/canvas/evas_object_main.c
+++ b/src/lib/evas/canvas/evas_object_main.c
@@ -4,6 +4,7 @@
 
 #include "evas_common_private.h"
 #include "evas_private.h"
+#include <Ecore.h>
 
 EVAS_MEMPOOL(_mp_sh);
 
@@ -2118,9 +2119,17 @@ _efl_canvas_object_efl_object_provider_find(Eo *eo_obj 
EINA_UNUSED, Evas_Object_
         if ((obj->delete_me) || (!obj->layer)) return NULL;
         return obj->layer->evas->evas;
      }
+   else if (klass == EFL_LOOP_CLASS)
+     return ecore_main_loop_get();
    return efl_provider_find(efl_super(eo_obj, MY_CLASS), klass);
 }
 
+EOLIAN static Efl_Loop *
+_efl_canvas_object_efl_loop_user_loop_get(Eo *eo_obj EINA_UNUSED, 
Evas_Object_Protected_Data *obj EINA_UNUSED)
+{
+   return ecore_main_loop_get();
+}
+
 EOLIAN Evas_Object*
 _evas_canvas_object_top_at_xy_get(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, 
Evas_Coord x, Evas_Coord y, Eina_Bool include_pass_events_objects, Eina_Bool 
include_hidden_objects)
 {

-- 


Reply via email to