jpeg pushed a commit to branch master.

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

commit 569ad0bac4590e8a18800741ea2345174c3683f3
Author: Jean-Philippe Andre <jp.an...@samsung.com>
Date:   Fri Jul 14 16:55:10 2017 +0900

    evas/edje/elm: Override debug_name in core classes
    
    This is really only a demonstration of what kind of information
    we can print with efl_debug_name_get(). Hopefully this can help
    debugging with printf/ERR logs and even help with live debugging
    inside gdb.
    
    This shouldn't be used for other purposes than debugging, as the
    exact string format is not defined.
    
    @feature
---
 src/lib/edje/edje_object.eo              |  1 +
 src/lib/edje/edje_smart.c                | 11 +++++++++++
 src/lib/elementary/efl_ui_win.c          |  9 +++++++++
 src/lib/elementary/efl_ui_win.eo         |  1 +
 src/lib/elementary/elm_widget.c          | 10 ++++++++++
 src/lib/elementary/elm_widget.eo         |  1 +
 src/lib/evas/canvas/efl_canvas_group.eo  |  1 +
 src/lib/evas/canvas/efl_canvas_object.eo |  1 +
 src/lib/evas/canvas/evas_main.c          |  5 ++++-
 src/lib/evas/canvas/evas_name.c          | 20 ++++++++++++++++++++
 src/lib/evas/canvas/evas_object_smart.c  |  9 +++++++++
 11 files changed, 68 insertions(+), 1 deletion(-)

diff --git a/src/lib/edje/edje_object.eo b/src/lib/edje/edje_object.eo
index 42314c3555..c294d43f66 100644
--- a/src/lib/edje/edje_object.eo
+++ b/src/lib/edje/edje_object.eo
@@ -1176,6 +1176,7 @@ class Edje.Object (Efl.Canvas.Group.Clipped, Efl.File, 
Efl.Container, Efl.Part,
       Efl.Gfx.size { set; }
       Efl.Object.constructor;
       Efl.Object.destructor;
+      Efl.Object.debug_name_override { get; }
       Efl.Canvas.Object.no_render { set; }
       Efl.Canvas.Object.paragraph_direction { set; }
       Efl.Canvas.Group.group_calculate;
diff --git a/src/lib/edje/edje_smart.c b/src/lib/edje/edje_smart.c
index 8c6800fded..4f105ff595 100644
--- a/src/lib/edje/edje_smart.c
+++ b/src/lib/edje/edje_smart.c
@@ -60,6 +60,17 @@ _edje_object_efl_object_destructor(Eo *obj, Edje *class_data)
    efl_data_unref(obj, class_data->base);
 }
 
+EOLIAN static const char *
+_edje_object_efl_object_debug_name_override_get(Eo *obj, Edje *ed)
+{
+   const char *base;
+
+   base = efl_debug_name_get(efl_super(obj, MY_CLASS));
+   return eina_slstr_printf("%s:file='%s':group='%s'", base,
+                            ed->file ? eina_file_filename_get(ed->file->f) : 
NULL,
+                            ed->group);
+}
+
 EOLIAN static void
 _edje_object_efl_object_dbg_info_get(Eo *eo_obj, Edje *_pd EINA_UNUSED, 
Efl_Dbg_Info *root) EINA_ARG_NONNULL(3)
 {
diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c
index 63f3957dd5..7456cb87d4 100644
--- a/src/lib/elementary/efl_ui_win.c
+++ b/src/lib/elementary/efl_ui_win.c
@@ -6608,6 +6608,15 @@ _efl_ui_win_class_constructor(Efl_Class *klass)
      }
 }
 
+EOLIAN static const char *
+_efl_ui_win_efl_object_debug_name_override_get(Eo *obj, Efl_Ui_Win_Data *pd)
+{
+   const char *base;
+
+   base = efl_debug_name_get(efl_super(obj, MY_CLASS));
+   return eina_slstr_printf("%s:'%s':'%s'", base, pd->name, pd->title);
+}
+
 EOLIAN static Eo*
 _efl_ui_win_elm_interface_atspi_accessible_parent_get(Eo *obj EINA_UNUSED, 
Efl_Ui_Win_Data *sd EINA_UNUSED)
 {
diff --git a/src/lib/elementary/efl_ui_win.eo b/src/lib/elementary/efl_ui_win.eo
index bbc1a7f4fc..21b8d86c5a 100644
--- a/src/lib/elementary/efl_ui_win.eo
+++ b/src/lib/elementary/efl_ui_win.eo
@@ -930,6 +930,7 @@ class Efl.Ui.Win (Elm.Widget, Efl.Canvas, 
Elm.Interface.Atspi.Window,
       Efl.Object.constructor;
       Efl.Object.destructor;
       Efl.Object.finalize;
+      Efl.Object.debug_name_override { get; }
       Efl.Gfx.visible { set; }
       Efl.Gfx.position { set; }
       Efl.Gfx.size { set; }
diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c
index 3780475bdf..7e5380de9c 100644
--- a/src/lib/elementary/elm_widget.c
+++ b/src/lib/elementary/elm_widget.c
@@ -6234,6 +6234,16 @@ _elm_widget_efl_object_destructor(Eo *obj, 
Elm_Widget_Smart_Data *sd)
    sd->on_destroy = EINA_FALSE;
 }
 
+EOLIAN static const char *
+_elm_widget_efl_object_debug_name_override_get(Eo *obj, Elm_Widget_Smart_Data 
*sd EINA_UNUSED)
+{
+   const char *base, *focus = "";
+
+   if (elm_obj_widget_focus_get(obj)) focus = ":focused";
+   base = efl_debug_name_get(efl_super(obj, MY_CLASS));
+   return eina_slstr_printf("%s%s", base, focus);
+}
+
 EOLIAN static Eina_Bool
 _elm_widget_on_focus(Eo *obj, Elm_Widget_Smart_Data *sd, Elm_Object_Item *item 
EINA_UNUSED)
 {
diff --git a/src/lib/elementary/elm_widget.eo b/src/lib/elementary/elm_widget.eo
index 5efd4ddb89..9dfda78bc5 100644
--- a/src/lib/elementary/elm_widget.eo
+++ b/src/lib/elementary/elm_widget.eo
@@ -787,6 +787,7 @@ abstract Elm.Widget (Efl.Canvas.Group, 
Elm.Interface.Atspi_Accessible,
       Efl.Object.finalize;
       Efl.Object.destructor;
       Efl.Object.provider_find;
+      Efl.Object.debug_name_override { get; }
       Efl.Gfx.color { set; }
       Efl.Gfx.visible { set; }
       Efl.Gfx.position { set; }
diff --git a/src/lib/evas/canvas/efl_canvas_group.eo 
b/src/lib/evas/canvas/efl_canvas_group.eo
index 356ad5e19c..3235dadd97 100644
--- a/src/lib/evas/canvas/efl_canvas_group.eo
+++ b/src/lib/evas/canvas/efl_canvas_group.eo
@@ -102,6 +102,7 @@ class Efl.Canvas.Group (Efl.Canvas.Object)
       class.destructor;
       Efl.Object.constructor;
       Efl.Object.destructor;
+      Efl.Object.debug_name_override { get; }
       Efl.Canvas.Object.no_render { set; }
       Efl.Canvas.Object.paragraph_direction { get; set; }
    }
diff --git a/src/lib/evas/canvas/efl_canvas_object.eo 
b/src/lib/evas/canvas/efl_canvas_object.eo
index b49a42addf..bf06f31f8c 100644
--- a/src/lib/evas/canvas/efl_canvas_object.eo
+++ b/src/lib/evas/canvas/efl_canvas_object.eo
@@ -662,6 +662,7 @@ abstract Efl.Canvas.Object (Efl.Object, Efl.Gfx, 
Efl.Gfx.Stack, Efl.Animator,
       Efl.Object.destructor;
       Efl.Object.finalize;
       Efl.Object.provider_find;
+      Efl.Object.debug_name_override { get; }
       Efl.Gfx.visible { get; set; }
       Efl.Gfx.color { get; set; }
       Efl.Gfx.color_part { get; set; }
diff --git a/src/lib/evas/canvas/evas_main.c b/src/lib/evas/canvas/evas_main.c
index 1a6f22a337..000f52e08b 100644
--- a/src/lib/evas/canvas/evas_main.c
+++ b/src/lib/evas/canvas/evas_main.c
@@ -312,7 +312,10 @@ _evas_canvas_efl_object_destructor(Eo *eo_e, 
Evas_Public_Data *e)
                     {
                        if ((o->ref > 0) || (efl_ref_get(o->object) > 0))
                          {
-                            ERR("obj(%p, %s) ref count(%d) is bigger than 0. 
This object couldn't be deleted", o, o->type, efl_ref_get(o->object));
+                            ERR("obj(%s) ref count(%d) is bigger than 0. This "
+                                "object couldn't be deleted",
+                                efl_debug_name_get(o->object),
+                                efl_ref_get(o->object));
                             continue;
                          }
                        unrefs = eina_list_append(unrefs, o->object);
diff --git a/src/lib/evas/canvas/evas_name.c b/src/lib/evas/canvas/evas_name.c
index 1e75884894..a048bff0f5 100644
--- a/src/lib/evas/canvas/evas_name.c
+++ b/src/lib/evas/canvas/evas_name.c
@@ -66,3 +66,23 @@ evas_object_name_child_find(const Evas_Object *eo_obj, const 
char *name, int rec
    return (!name ?  NULL : _priv_evas_object_name_child_find(eo_obj, name, 
recurse));
 }
 
+/* new in EO */
+EOLIAN const char *
+_efl_canvas_object_efl_object_debug_name_override_get(Eo *eo_obj, 
Evas_Object_Protected_Data *obj)
+{
+   const char *norend = obj->no_render ? ":no_render" : "";
+   const char *clip = obj->clip.clipees ? ":clipper" : "";
+   const char *base;
+
+   base = efl_debug_name_get(efl_super(eo_obj, EFL_CANVAS_OBJECT_CLASS));
+   if (obj->cur->visible)
+     {
+        return eina_slstr_printf("%s%s%s:(%d,%d %dx%d)", base, norend, clip,
+                                 obj->cur->geometry.x, obj->cur->geometry.y,
+                                 obj->cur->geometry.w, obj->cur->geometry.h);
+     }
+   else
+     {
+        return eina_slstr_printf("%s:hidden%s%s", base, norend, clip);
+     }
+}
diff --git a/src/lib/evas/canvas/evas_object_smart.c 
b/src/lib/evas/canvas/evas_object_smart.c
index eedccc04cd..9a6e725e3b 100644
--- a/src/lib/evas/canvas/evas_object_smart.c
+++ b/src/lib/evas/canvas/evas_object_smart.c
@@ -647,6 +647,15 @@ _efl_canvas_group_efl_object_destructor(Eo *eo_obj, 
Evas_Smart_Data *o)
      }
 }
 
+EOLIAN static const char *
+_efl_canvas_group_efl_object_debug_name_override_get(Eo *eo_obj, 
Evas_Smart_Data *o)
+{
+   const char *base;
+
+   base = efl_debug_name_get(efl_super(eo_obj, MY_CLASS));
+   return eina_slstr_printf("%s:children=%d", base, 
eina_inlist_count(o->contained));
+}
+
 static inline void
 _evas_object_smart_move_relative_internal(Evas_Smart_Data *o, Evas_Coord dx, 
Evas_Coord dy)
 {

-- 


Reply via email to