jack: fail if jack_get_ports() returns NULL
When jack_get_ports() returns NULL, we cannot have any ports to connect to, and the device cannot play anything.
This commit is contained in:
parent
5bcf415ad0
commit
3baeddbcae
@ -214,8 +214,6 @@ mpd_jack_test_default_device(void)
|
|||||||
static int
|
static int
|
||||||
mpd_jack_connect(struct jack_data *jd, struct audio_format *audio_format)
|
mpd_jack_connect(struct jack_data *jd, struct audio_format *audio_format)
|
||||||
{
|
{
|
||||||
const char **jports;
|
|
||||||
|
|
||||||
jd->audio_format = audio_format;
|
jd->audio_format = audio_format;
|
||||||
|
|
||||||
jd->ringbuffer[0] = jack_ringbuffer_create(jd->ringbuffer_size);
|
jd->ringbuffer[0] = jack_ringbuffer_create(jd->ringbuffer_size);
|
||||||
@ -253,10 +251,18 @@ mpd_jack_connect(struct jack_data *jd, struct audio_format *audio_format)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* hay que buscar que hay */
|
if (jd->output_ports[1] == NULL) {
|
||||||
if (!jd->output_ports[1] &&
|
/* no output ports were configured - ask libjack for
|
||||||
(jports = jack_get_ports(jd->client, NULL, NULL,
|
defaults */
|
||||||
JackPortIsPhysical | JackPortIsInput))) {
|
const char **jports;
|
||||||
|
|
||||||
|
jports = jack_get_ports(jd->client, NULL, NULL,
|
||||||
|
JackPortIsPhysical | JackPortIsInput);
|
||||||
|
if (jports == NULL) {
|
||||||
|
g_warning("no ports found");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
jd->output_ports[0] = g_strdup(jports[0]);
|
jd->output_ports[0] = g_strdup(jports[0]);
|
||||||
jd->output_ports[1] = g_strdup(jports[1] != NULL
|
jd->output_ports[1] = g_strdup(jports[1] != NULL
|
||||||
? jports[1] : jports[0]);
|
? jports[1] : jports[0]);
|
||||||
@ -265,19 +271,17 @@ mpd_jack_connect(struct jack_data *jd, struct audio_format *audio_format)
|
|||||||
free(jports);
|
free(jports);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( jd->output_ports[1] ) {
|
if ( (jack_connect(jd->client, jack_port_name(jd->ports[0]),
|
||||||
if ( (jack_connect(jd->client, jack_port_name(jd->ports[0]),
|
jd->output_ports[0])) != 0 ) {
|
||||||
jd->output_ports[0])) != 0 ) {
|
g_warning("%s is not a valid Jack Client / Port",
|
||||||
g_warning("%s is not a valid Jack Client / Port",
|
jd->output_ports[0]);
|
||||||
jd->output_ports[0]);
|
return -1;
|
||||||
return -1;
|
}
|
||||||
}
|
if ( (jack_connect(jd->client, jack_port_name(jd->ports[0]),
|
||||||
if ( (jack_connect(jd->client, jack_port_name(jd->ports[0]),
|
jd->output_ports[1])) != 0 ) {
|
||||||
jd->output_ports[1])) != 0 ) {
|
g_warning("%s is not a valid Jack Client / Port",
|
||||||
g_warning("%s is not a valid Jack Client / Port",
|
jd->output_ports[1]);
|
||||||
jd->output_ports[1]);
|
return -1;
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user