From e2d143d19ed7e70480d40bbb8c6a6db29a3ab677 Mon Sep 17 00:00:00 2001 From: Marcel Hollerbach Date: Tue, 5 Jun 2018 10:56:09 -0400 Subject: [PATCH] eo: make noref also a special count Summary: this brings down the first frame time from 2.0 sec. to something at 0.7 sec. ref T6983 Reviewers: zmike Reviewed By: zmike Subscribers: YOhoho, cedric, #committers, zmike Tags: #efl Maniphest Tasks: T6983 Differential Revision: https://phab.enlightenment.org/D6244 --- src/lib/eo/eo_base_class.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/lib/eo/eo_base_class.c b/src/lib/eo/eo_base_class.c index e57a245ea8..05b81ddbf2 100644 --- a/src/lib/eo/eo_base_class.c +++ b/src/lib/eo/eo_base_class.c @@ -62,6 +62,7 @@ struct _Efl_Object_Data unsigned short event_cb_efl_event_callback_add_count; unsigned short event_cb_efl_event_callback_del_count; unsigned short event_cb_efl_event_del_count; + unsigned short event_cb_efl_event_noref_count; #endif Eina_Bool callback_stopped : 1; Eina_Bool need_cleaning : 1; @@ -1162,6 +1163,8 @@ _special_event_count_inc(Efl_Object_Data *pd, const Efl_Callback_Array_Item *it) CB_COUNT_INC(pd->event_cb_efl_event_callback_del_count); else if (it->desc == EFL_EVENT_DEL) CB_COUNT_INC(pd->event_cb_efl_event_del_count); + else if (it->desc == EFL_EVENT_NOREF) + CB_COUNT_INC(pd->event_cb_efl_event_noref_count); else if (it->desc == EFL_EVENT_DESTRUCT) pd->has_destroyed_event_cb = EINA_TRUE; } @@ -1175,6 +1178,8 @@ _special_event_count_dec(Efl_Object_Data *pd, const Efl_Callback_Array_Item *it) CB_COUNT_DEC(pd->event_cb_efl_event_callback_del_count); else if (it->desc == EFL_EVENT_DEL) CB_COUNT_DEC(pd->event_cb_efl_event_del_count); + else if (it->desc == EFL_EVENT_NOREF) + CB_COUNT_DEC(pd->event_cb_efl_event_noref_count); } #endif @@ -1227,6 +1232,7 @@ _eo_callback_remove_all(Efl_Object_Data *pd) pd->event_cb_efl_event_callback_add_count = 0; pd->event_cb_efl_event_callback_del_count = 0; pd->event_cb_efl_event_del_count = 0; + pd->event_cb_efl_event_noref_count = 0; #endif } @@ -1612,6 +1618,8 @@ _event_callback_call(Eo *obj_id, Efl_Object_Data *pd, (pd->event_cb_efl_event_callback_del_count == 0)) return EINA_FALSE; else if ((desc == EFL_EVENT_DEL) && (pd->event_cb_efl_event_del_count == 0)) return EINA_FALSE; + else if ((desc == EFL_EVENT_NOREF) && + (pd->event_cb_efl_event_noref_count == 0)) return EINA_FALSE; #endif if (pd->event_frame)