EOLIAN static void _efl_canvas_vg_object_root_node_set(Eo *eo_obj, Efl_Canvas_Vg_Object_Data *pd, Efl_VG *root_node) { // if the same root is already set if (pd->user_entry && pd->user_entry->root == root_node) return; Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS); // check if a file has been already set if (pd->vg_entry) { evas_cache_vg_entry_del(pd->vg_entry); pd->vg_entry = NULL; } // detach/free the old root_node if (pd->user_entry && pd->user_entry->root) { efl_canvas_vg_node_vg_obj_set(pd->user_entry->root, NULL, NULL); efl_parent_set(pd->user_entry->root, NULL); } if (root_node) { if (!pd->user_entry) { pd->user_entry = malloc(sizeof(Vg_User_Entry)); if (!pd->user_entry) { ERR("Failed to alloc user entry data while setting root node"); return; } } pd->user_entry->w = pd->user_entry->h = 0; pd->user_entry->root = root_node; // set the parent so that vg canvas can render it. efl_parent_set(pd->user_entry->root, pd->root); efl_canvas_vg_node_vg_obj_set(root_node, eo_obj, pd); } else if (pd->user_entry) { // drop any surface cache attached to it. ENFN->ector_surface_cache_drop(_evas_engine_context(obj->layer->evas), pd->user_entry->root); free(pd->user_entry); pd->user_entry = NULL; } // force a redraw pd->changed = EINA_TRUE; evas_object_change(eo_obj, obj); }
static void _efl_net_server_ssl_client_event_closed(void *data, const Efl_Event *event) { Eo *server = data; Eo *client = event->object; efl_event_callback_del(client, EFL_IO_CLOSER_EVENT_CLOSED, _efl_net_server_ssl_client_event_closed, server); if (efl_parent_get(client) == server) efl_parent_set(client, NULL); /* do NOT change count as we're using the underlying server's count */ //efl_net_server_clients_count_set(server, efl_net_server_clients_count_get(server) - 1); }
EOLIAN static void _efl_net_dialer_simple_efl_object_destructor(Eo *o, Efl_Net_Dialer_Simple_Data *pd) { Eo *inner_io; if (pd->inner_class) pd->inner_class = NULL; eina_stringshare_replace(&pd->proxy_url, NULL); if (pd->line_delimiter.mem) { free((void *)pd->line_delimiter.mem); pd->line_delimiter.mem = NULL; } inner_io = efl_io_buffered_stream_inner_io_get(o); if (inner_io) { efl_event_callback_array_del(inner_io, _efl_net_dialer_simple_inner_io_cbs(), o); if (efl_parent_get(inner_io) == o) efl_parent_set(inner_io, NULL); } efl_destructor(efl_super(o, EFL_NET_DIALER_SIMPLE_CLASS)); }
EOLIAN static void _xml_sax_base_document_handler_set(Eo *obj, Xml_Base_Data *pd, Efl_Object *handler) { pd->document_handler = handler; efl_parent_set(handler, obj); }