jpeg pushed a commit to branch master.

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

commit c5663ddb84a96399067b94049b01614b4f769346
Author: Jean-Philippe Andre <jp.an...@samsung.com>
Date:   Wed Jun 8 13:55:21 2016 +0900

    win: Forward render_post events from evas to window
    
    To do: optimize event forward when no one is listening.
---
 src/lib/elementary/efl_ui_win.c  | 18 ++++++++++++++++++
 src/lib/elementary/efl_ui_win.eo |  2 +-
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c
index 82b7125..a071507 100644
--- a/src/lib/elementary/efl_ui_win.c
+++ b/src/lib/elementary/efl_ui_win.c
@@ -1733,6 +1733,18 @@ 
EO_CALLBACKS_ARRAY_DEFINE(_elm_win_evas_feed_fake_callbacks,
 { EFL_EVENT_KEY_UP, _evas_event_key_feed_fake_cb })
 
 static void
+_elm_win_evas_render_post(void *data,
+                          Evas *e EINA_UNUSED,
+                          Evas_Object *obj EINA_UNUSED,
+                          void *event_info)
+{
+   Efl_Gfx_Event_Render_Post *ev = event_info;
+   Eo *win = data;
+
+   eo_event_callback_call(win, EFL_UI_WIN_EVENT_RENDER_POST, ev);
+}
+
+static void
 _deferred_ecore_evas_free(void *data)
 {
    ecore_evas_free(data);
@@ -2079,6 +2091,10 @@ _efl_ui_win_evas_object_smart_del(Eo *obj, 
Efl_Ui_Win_Data *sd)
                                        EVAS_CALLBACK_CHANGED_SIZE_HINTS,
                                        
_elm_win_on_resize_obj_changed_size_hints,
                                        obj);
+
+   // TODO: optimize event forwarders with EO_EVENT_CALLBACK_ADD/DEL
+   evas_object_event_callback_del_full(sd->evas, EVAS_CALLBACK_RENDER_POST,
+                                       _elm_win_evas_render_post, obj);
    eo_event_callback_array_del(sd->evas, _elm_win_evas_forward_callbacks(), 
obj);
    eo_event_callback_array_del(obj, _elm_win_evas_feed_fake_callbacks(), 
sd->evas);
 
@@ -4140,6 +4156,8 @@ _elm_win_finalize_internal(Eo *obj, Efl_Ui_Win_Data *sd, 
const char *name, Elm_W
 
    eo_event_callback_array_add(sd->evas, _elm_win_evas_forward_callbacks(), 
obj);
    eo_event_callback_array_add(obj, _elm_win_evas_feed_fake_callbacks(), 
sd->evas);
+   evas_object_event_callback_add(sd->evas, EVAS_CALLBACK_RENDER_POST,
+                                  _elm_win_evas_render_post, obj);
 
    evas_object_show(sd->edje);
 
diff --git a/src/lib/elementary/efl_ui_win.eo b/src/lib/elementary/efl_ui_win.eo
index e0097dd..e7be056 100644
--- a/src/lib/elementary/efl_ui_win.eo
+++ b/src/lib/elementary/efl_ui_win.eo
@@ -832,6 +832,6 @@ class Efl.Ui.Win (Elm.Widget, Elm.Interface.Atspi.Window,
       wm,rotation,changed;
       theme,changed;
       elm,action,block_menu;
+      render,post: Efl.Gfx.Event.Render_Post;
    }
-
 }

-- 


Reply via email to