Example #1
0
static
void
jackctl_server_free_internals (
	struct jackctl_server * server_ptr)
{
	JSList * next_node_ptr;
	struct jackctl_internal * internal_ptr;

	while (server_ptr->internals) {
		next_node_ptr = server_ptr->internals->next;
		internal_ptr = (struct jackctl_internal*)server_ptr->internals->data;

		jackctl_free_driver_parameters ((struct jackctl_driver*)internal_ptr);
		free (internal_ptr->desc_ptr->params);
		free (internal_ptr->desc_ptr);
		free (internal_ptr);

		free (server_ptr->internals);
		server_ptr->internals = next_node_ptr;
	}
}
Example #2
0
static
void
jackctl_server_free_drivers (
	struct jackctl_server * server_ptr)
{
	JSList * next_node_ptr;
	struct jackctl_driver * driver_ptr;

	while (server_ptr->drivers) {
		next_node_ptr = server_ptr->drivers->next;
		driver_ptr = (struct jackctl_driver*)server_ptr->drivers->data;

		jackctl_free_driver_parameters (driver_ptr);
		free (driver_ptr->desc_ptr->params);
		free (driver_ptr->desc_ptr);
		free (driver_ptr);

		free (server_ptr->drivers);
		server_ptr->drivers = next_node_ptr;
	}
}
Example #3
0
static
bool
jackctl_add_driver_parameters(
    struct jackctl_driver * driver_ptr)
{
    uint32_t i;
    union jackctl_parameter_value jackctl_value;
    jackctl_param_type_t jackctl_type;
    struct jackctl_parameter * parameter_ptr;
    jack_driver_param_desc_t * descriptor_ptr;

    for (i = 0 ; i < driver_ptr->desc_ptr->nparams ; i++)
    {
        descriptor_ptr = driver_ptr->desc_ptr->params + i;

        switch (descriptor_ptr->type)
        {
        case JackDriverParamInt:
            jackctl_type = JackParamInt;
            jackctl_value.i = descriptor_ptr->value.i;
            break;
        case JackDriverParamUInt:
            jackctl_type = JackParamUInt;
            jackctl_value.ui = descriptor_ptr->value.ui;
            break;
        case JackDriverParamChar:
            jackctl_type = JackParamChar;
            jackctl_value.c = descriptor_ptr->value.c;
            break;
        case JackDriverParamString:
            jackctl_type = JackParamString;
            strcpy(jackctl_value.str, descriptor_ptr->value.str);
            break;
        case JackDriverParamBool:
            jackctl_type = JackParamBool;
            jackctl_value.b = descriptor_ptr->value.i;
            break;
        default:
            jack_error("unknown driver parameter type %i", (int)descriptor_ptr->type);
            assert(0);
            goto fail;
        }

        parameter_ptr = jackctl_add_parameter(
            &driver_ptr->parameters,
	    descriptor_ptr->character,
            descriptor_ptr->name,
            descriptor_ptr->short_desc,
            descriptor_ptr->long_desc,
            jackctl_type,
            NULL,
            NULL,
            jackctl_value,
            descriptor_ptr->constraint);

        if (parameter_ptr == NULL)
        {
            goto fail;
        }

        parameter_ptr->driver_ptr = driver_ptr;
    }

    return true;

fail:
    jackctl_free_driver_parameters(driver_ptr);

    return false;
}