void page_destroy(Evas_Object *scroller, Evas_Object *page) { Evas_Object *mapbuf; Evas_Object *bg; Evas_Object *item; Evas_Object *box; Evas_Object *index; Evas_Object *tab; Eina_List *pending_list; register unsigned int i; int page_max_app; unsigned int count; evas_object_event_callback_del(page, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints_cb); page_max_app = (int) evas_object_data_get(scroller, "page_max_app"); for (i = 0; i < page_max_app; i ++) { item = page_unpack_item_at(page, i); if (!item) continue; item_destroy(item); } pending_list = evas_object_data_get(page, "pending,list"); eina_list_free(pending_list); bg = evas_object_data_get(page, "bg"); evas_object_del(bg); box = evas_object_data_get(scroller, "box"); ret_if(NULL == box); mapbuf = mapbuf_get_mapbuf(page); if (mapbuf) { elm_box_unpack(box, mapbuf); mapbuf_unbind(mapbuf); } else { elm_box_unpack(box, page); } index = evas_object_data_get(scroller, "index"); if (index) { tab = evas_object_data_get(scroller, "tab"); count = page_scroller_count_page(scroller); index_update(tab, index, count); } evas_object_data_del(page, "win"); evas_object_data_del(page, "layout"); evas_object_data_del(page, "controlbar"); evas_object_data_del(page, "tab"); evas_object_data_del(page, "scroller"); evas_object_data_del(page, "page_edje"); evas_object_data_del(page, "page_max_app"); evas_object_data_del(page, "bg"); evas_object_data_del(page, "pending,list"); evas_object_data_del(page, "dirty"); layout_unload_edj(page); }
void gw_prioqueue_destroy(gw_prioqueue_t *queue, void(*item_destroy)(void*)) { long i; if (queue == NULL) return; for (i = 0; i < queue->len; i++) { if (item_destroy != NULL && queue->tab[i]->item != NULL) item_destroy(queue->tab[i]->item); gw_free(queue->tab[i]); } mutex_destroy(queue->mutex); pthread_cond_destroy(&queue->nonempty); gw_free(queue->tab); gw_free(queue); }