Example #1
0
int output_unregister(char *name) {

	pom_mutex_lock(&output_lock);
	struct output_reg *tmp;
	for (tmp = output_reg_head; tmp && strcmp(tmp->reg_info->name, name); tmp = tmp->next);

	if (!tmp) {
		pom_mutex_unlock(&output_lock);
		return POM_OK;
	}

	registry_remove_instance_type(output_registry_class, name);

	if (tmp->prev)
		tmp->prev->next = tmp->next;
	else
		output_reg_head = tmp->next;

	if (tmp->next)
		tmp->next->prev = tmp->prev;

	mod_refcount_dec(tmp->reg_info->mod);

	free(tmp);

	pom_mutex_unlock(&output_lock);

	return POM_OK;
}
Example #2
0
int input_unregister(char *name) {

	struct input_reg *reg;

	for (reg = input_reg_head; reg && strcmp(reg->info->name, name); reg = reg->next);
	if (!reg) 
		return POM_OK;

	registry_remove_instance_type(input_registry_class, name);

	if (reg->prev)
		reg->prev->next = reg->next;
	else
		input_reg_head = reg->next;
	
	if (reg->next)
		reg->next->prev = reg->prev;

	reg->next = NULL;
	reg->prev = NULL;

	mod_refcount_dec(reg->module);

	free(reg);

	return POM_OK;
}