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
This commit is contained in:
Jean-Philippe Andre 2017-07-14 16:55:10 +09:00
parent c4769ff898
commit 569ad0bac4
11 changed files with 68 additions and 1 deletions

View File

@ -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;

View File

@ -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)
{

View File

@ -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)
{

View File

@ -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; }

View File

@ -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)
{

View File

@ -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; }

View File

@ -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; }
}

View File

@ -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; }

View File

@ -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);

View File

@ -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);
}
}

View File

@ -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)
{