diff --git a/legacy/elementary/src/lib/elm_deprecated_before.h b/legacy/elementary/src/lib/elm_deprecated_before.h index 4872250b25..8625c3a495 100644 --- a/legacy/elementary/src/lib/elm_deprecated_before.h +++ b/legacy/elementary/src/lib/elm_deprecated_before.h @@ -9,12 +9,14 @@ typedef Eina_Bool (*Elm_Gen_Item_State_Get_Cb)(void *data, E typedef void (*Elm_Gen_Item_Del_Cb)(void *data, Evas_Object *obj); /**< Deletion class function for gen item classes. */ struct _Elm_Gen_Item_Class { + //XXX: version name is not intuitive. + //How about Eina_Bool allocated_by_gen : 1 ? int version; unsigned int refcount; + Eina_Bool delete_me : 1; const char *item_style; const char *mode_item_style; const char *edit_item_style; - Eina_Bool delete_me : 1; struct _Elm_Gen_Item_Class_Func { Elm_Gen_Item_Text_Get_Cb text_get; diff --git a/legacy/elementary/src/lib/elm_gengrid.c b/legacy/elementary/src/lib/elm_gengrid.c index bbe69ef7c4..956104d4db 100644 --- a/legacy/elementary/src/lib/elm_gengrid.c +++ b/legacy/elementary/src/lib/elm_gengrid.c @@ -21,23 +21,6 @@ (it)->unsel_cb = (Ecore_Cb)_item_unselect; \ (it)->unrealize_cb = (Ecore_Cb)_item_unrealize_cb -#define ELM_GENGRID_CHECK_ITC_VER(itc) \ - do \ - { \ - if (!itc) \ - { \ - ERR("Gengrid_Item_Class(itc) is NULL"); \ - return; \ - } \ - if (itc->version != ELM_GENGRID_ITEM_CLASS_VERSION) \ - { \ - ERR("Gengrid_Item_Class version mismatched! required = (%d), current = (%d)", itc->version, ELM_GENGRID_ITEM_CLASS_VERSION); \ - return; \ - } \ - } \ - while(0) - - struct Elm_Gen_Item_Type { Elm_Gen_Item *it; @@ -2797,32 +2780,36 @@ elm_gengrid_item_class_new(void) EAPI void elm_gengrid_item_class_free(Elm_Gengrid_Item_Class *itc) { - ELM_GENGRID_CHECK_ITC_VER(itc); - if (!itc->delete_me) itc->delete_me = EINA_TRUE; - if (itc->refcount > 0) elm_gengrid_item_class_unref(itc); - else + if (itc && (itc->version == ELM_GENGRID_ITEM_CLASS_VERSION)) { - itc->version = 0; - free(itc); + if (!itc->delete_me) itc->delete_me = EINA_TRUE; + if (itc->refcount > 0) elm_gengrid_item_class_unref(itc); + else + { + itc->version = 0; + free(itc); + } } } EAPI void elm_gengrid_item_class_ref(Elm_Gengrid_Item_Class *itc) { - ELM_GENGRID_CHECK_ITC_VER(itc); - - itc->refcount++; - if (itc->refcount == 0) itc->refcount--; + if (itc && (itc->version == ELM_GENGRID_ITEM_CLASS_VERSION)) + { + itc->refcount++; + if (itc->refcount == 0) itc->refcount--; + } } EAPI void elm_gengrid_item_class_unref(Elm_Gengrid_Item_Class *itc) { - ELM_GENGRID_CHECK_ITC_VER(itc); - - if (itc->refcount > 0) itc->refcount--; - if (itc->delete_me && (!itc->refcount)) - elm_gengrid_item_class_free(itc); + if (itc && (itc->version == ELM_GENGRID_ITEM_CLASS_VERSION)) + { + if (itc->refcount > 0) itc->refcount--; + if (itc->delete_me && (!itc->refcount)) + elm_gengrid_item_class_free(itc); + } } diff --git a/legacy/elementary/src/lib/elm_genlist.c b/legacy/elementary/src/lib/elm_genlist.c index f6d4fb3419..2c97995638 100644 --- a/legacy/elementary/src/lib/elm_genlist.c +++ b/legacy/elementary/src/lib/elm_genlist.c @@ -5620,33 +5620,37 @@ elm_genlist_item_class_new(void) EAPI void elm_genlist_item_class_free(Elm_Genlist_Item_Class *itc) { - ELM_GENLIST_CHECK_ITC_VER(itc); - if (!itc->delete_me) itc->delete_me = EINA_TRUE; - if (itc->refcount > 0) elm_genlist_item_class_unref(itc); - else + if (itc && (itc->version == ELM_GENLIST_ITEM_CLASS_VERSION)) { - itc->version = 0; - free(itc); + if (!itc->delete_me) itc->delete_me = EINA_TRUE; + if (itc->refcount > 0) elm_genlist_item_class_unref(itc); + else + { + itc->version = 0; + free(itc); + } } } EAPI void elm_genlist_item_class_ref(Elm_Genlist_Item_Class *itc) { - ELM_GENLIST_CHECK_ITC_VER(itc); - - itc->refcount++; - if (itc->refcount == 0) itc->refcount--; + if (itc && (itc->version == ELM_GENLIST_ITEM_CLASS_VERSION)) + { + itc->refcount++; + if (itc->refcount == 0) itc->refcount--; + } } EAPI void elm_genlist_item_class_unref(Elm_Genlist_Item_Class *itc) { - ELM_GENLIST_CHECK_ITC_VER(itc); - - if (itc->refcount > 0) itc->refcount--; - if (itc->delete_me && (!itc->refcount)) - elm_genlist_item_class_free(itc); + if (itc && (itc->version == ELM_GENLIST_ITEM_CLASS_VERSION)) + { + if (itc->refcount > 0) itc->refcount--; + if (itc->delete_me && (!itc->refcount)) + elm_genlist_item_class_free(itc); + } } /* for gengrid as of now */