Beispiel #1
0
static void	ug_dataset_finalize (UgDataset* dataset)
{
	guint	index;

	if (dataset->destroy.func)
		dataset->destroy.func (dataset->destroy.data);

	for (index = 0;  index < dataset->data_len;  index += 2)
		ug_datalist_free (dataset->data[index]);
	g_free (dataset->data);
}
Beispiel #2
0
// free old list in dataset and set list with new_list.
void	ug_dataset_set_list (UgDataset* dataset, const UgData1Interface* iface, gpointer new_list)
{
	UgDatalist**	list;
	UgDatalist*		old_list;

	list = ug_dataset_get_list (dataset, iface);
	if (list == NULL)
		list = ug_dataset_alloc_list (dataset, iface);

	old_list = *list;
	*list = new_list;
	ug_datalist_free (old_list);
}
Beispiel #3
0
gboolean	ug_plugin_dispatch (UgPlugin* plugin, UgPluginCallback callback, gpointer user_data)
{
	UgMessage*	messages;
	UgMessage*	cur;

	messages = ug_plugin_pop_all (plugin);
	// dispatch messages
	if (callback) {
		for (cur = messages;  cur;  cur = cur->next)
			callback (plugin, cur, user_data);
	}
	// free messages
	ug_datalist_free (messages);
	// return TRUE if plug-in active.
	return (plugin->state == UG_STATE_ACTIVE);
}
Beispiel #4
0
void	ug_plugin_unref	(UgPlugin* plugin)
{
	UgFinalizeFunc	finalize;

	plugin->ref_count--;
	if (plugin->ref_count == 0) {
		finalize = plugin->iface->finalize;
		if (finalize)
			finalize (plugin);

		// finalize base data
		g_mutex_clear (&plugin->lock);
		ug_datalist_free (plugin->messages);
//		g_free (plugin);
		g_slice_free1 (plugin->iface->instance_size, plugin);
	}
}