Exemplo n.º 1
0
static void port_autoconnect(struct cbox_jack_io_impl *jii, jack_port_t *portobj, struct cbox_command_target *fb)
{
    struct cbox_io *io = jii->ioi.pio;

    for (uint32_t i = 0; i < io->io_env.output_count; i++)
    {
        gchar *cbox_port = g_strdup_printf("%s:out_%d", jii->client_name, 1 + i);
        gchar *config_key = g_strdup_printf("out_%d", 1 + i);
        autoconnect_by_var(jii->client, cbox_port, config_key, 0, 0, portobj, fb);
        g_free(cbox_port);
        g_free(config_key);
    }
    for (uint32_t i = 0; i < io->io_env.input_count; i++)
    {
        gchar *cbox_port = g_strdup_printf("%s:in_%d", jii->client_name, 1 + i);
        gchar *config_key = g_strdup_printf("in_%d", 1 + i);
        autoconnect_by_var(jii->client, cbox_port, config_key, 1, 0, portobj, fb);
        g_free(cbox_port);
        g_free(config_key);
    }
    for (GSList *p = io->midi_outputs; p; p = g_slist_next(p))
    {
        struct cbox_jack_midi_output *midiout = p->data;
        if (midiout->autoconnect_spec)
        {
            gchar *cbox_port = g_strdup_printf("%s:%s", jii->client_name, midiout->hdr.name);
            autoconnect_by_spec(jii->client, cbox_port, midiout->autoconnect_spec, 0, 1, portobj, fb);
            g_free(cbox_port);
        }
    }
    for (GSList *p = io->midi_inputs; p; p = g_slist_next(p))
    {
        struct cbox_jack_midi_input *midiin = p->data;
        if (midiin->autoconnect_spec)
        {
            gchar *cbox_port = g_strdup_printf("%s:%s", jii->client_name, midiin->hdr.name);
            autoconnect_by_spec(jii->client, cbox_port, midiin->autoconnect_spec, 1, 1, portobj, fb);
            g_free(cbox_port);
        }
    }
    for (GSList *p = io->audio_outputs; p; p = g_slist_next(p))
    {
        struct cbox_jack_audio_output *audioout = p->data;
        if (audioout->autoconnect_spec)
        {
            gchar *cbox_port = g_strdup_printf("%s:%s", jii->client_name, audioout->hdr.name);
            autoconnect_by_spec(jii->client, cbox_port, audioout->autoconnect_spec, 0, 1, portobj, fb);
            g_free(cbox_port);
        }
    }
    gchar *cbox_port = g_strdup_printf("%s:midi", jii->client_name);
    autoconnect_by_var(jii->client, cbox_port, "midi", 1, 1, portobj, fb);
    g_free(cbox_port);
}
Exemplo n.º 2
0
void cbox_jack_midi_output_set_autoconnect(struct cbox_jack_midi_output *jmo, const gchar *autoconnect_spec)
{
    if (jmo->autoconnect_spec)
        g_free(jmo->autoconnect_spec);
    jmo->autoconnect_spec = autoconnect_spec && *autoconnect_spec ? g_strdup(autoconnect_spec) : NULL;
    if (jmo->autoconnect_spec)
    {
        gchar *cbox_port = g_strdup_printf("%s:%s", jmo->jii->client_name, jmo->hdr.name);
        autoconnect_by_spec(jmo->jii->client, cbox_port, jmo->autoconnect_spec, 0, 1, NULL, NULL);
        g_free(cbox_port);
    }
}
Exemplo n.º 3
0
void cbox_jack_port_set_autoconnect(gchar **spec_ptr, const gchar *autoconnect_spec, struct cbox_jack_io_impl *jii, const gchar *port_name, gboolean is_cbox_input, gboolean is_midi)
{
    if (*spec_ptr)
        g_free(*spec_ptr);
    *spec_ptr = autoconnect_spec && *autoconnect_spec ? g_strdup(autoconnect_spec) : NULL;
    if (*spec_ptr)
    {
        gchar *cbox_port = g_strdup_printf("%s:%s", jii->client_name, port_name);
        autoconnect_by_spec(jii->client, cbox_port, *spec_ptr, is_cbox_input, is_midi, NULL, NULL);
        g_free(cbox_port);
    }
}
Exemplo n.º 4
0
static void autoconnect_by_var(jack_client_t *client, const char *port, const char *config_var, int is_cbox_input, int is_midi, const jack_port_t *only_connect_port, struct cbox_command_target *fb)
{
    const char *orig_spec = cbox_config_get_string(cbox_io_section, config_var);
    if (orig_spec)
        autoconnect_by_spec(client, port, orig_spec, is_cbox_input, is_midi, only_connect_port, fb);
}