From 5b2d68977423ce0f5610e93e37752f0c2ce71fff Mon Sep 17 00:00:00 2001 From: Stefan Kost Date: Wed, 4 Apr 2007 07:36:28 +0000 Subject: [PATCH] ext/jack/gstjackaudiosink.c: Try t better name clients. properly handle return codes when re- establishing links. Original commit message from CVS: * ext/jack/gstjackaudiosink.c: (gst_jack_ring_buffer_open_device), (gst_jack_ring_buffer_acquire): Try t better name clients. properly handle return codes when re- establishing links. --- ext/jack/gstjackaudiosink.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/ext/jack/gstjackaudiosink.c b/ext/jack/gstjackaudiosink.c index 6f0ea57118..d3efe8d657 100644 --- a/ext/jack/gstjackaudiosink.c +++ b/ext/jack/gstjackaudiosink.c @@ -26,7 +26,7 @@ * * * - * A Sink that outputs data to Jack ports. + * A Sink that outputs data to Jack ports. * * * It will create N Jack ports named out_<num> where <num> is starting from 1. @@ -39,7 +39,7 @@ * * When the ::connect property is set to auto, this element will try to connect * each output port to a random physical jack input pin. In this mode, the sink - * will expose the number of physical channels on its pad caps. + * will expose the number of physical channels on its pad caps. * * * When the ::connect property is set to none, the element will accept any @@ -396,12 +396,17 @@ gst_jack_ring_buffer_open_device (GstRingBuffer * buf) { GstJackAudioSink *sink; jack_status_t status = 0; + const gchar *name; sink = GST_JACK_AUDIO_SINK (GST_OBJECT_PARENT (buf)); GST_DEBUG_OBJECT (sink, "open"); - sink->client = gst_jack_audio_client_new ("GStreamer", sink->server, + name = g_get_application_name (); + if (!name) + name = "GStreamer"; + + sink->client = gst_jack_audio_client_new (name, sink->server, GST_JACK_CLIENT_SINK, jack_shutdown_cb, jack_process_cb, jack_buffer_size_cb, jack_sample_rate_cb, buf, &status); @@ -526,9 +531,11 @@ gst_jack_ring_buffer_acquire (GstRingBuffer * buf, GstRingBufferSpec * spec) ("No more physical ports, leaving some ports unconnected")); break; } + GST_DEBUG_OBJECT (sink, "try connecting to %s", + jack_port_name (sink->ports[i])); /* connect the port to a physical port */ - if ((res = jack_connect (client, jack_port_name (sink->ports[i]), - ports[i]))) + res = jack_connect (client, jack_port_name (sink->ports[i]), ports[i]); + if (res != 0 && res != EEXIST) goto cannot_connect; } free (ports); @@ -558,13 +565,14 @@ out_of_ports: could_not_activate: { GST_ELEMENT_ERROR (sink, RESOURCE, SETTINGS, (NULL), - ("Could not activate client (%d)", res)); + ("Could not activate client (%d:%s)", res, g_strerror (res))); return FALSE; } cannot_connect: { GST_ELEMENT_ERROR (sink, RESOURCE, SETTINGS, (NULL), - ("Could not connect output ports to physical ports (%d)", res)); + ("Could not connect output ports to physical ports (%d:%s)", + res, g_strerror (res))); free (ports); return FALSE; }