ext/jack/gstjackaudiosink.c: Try t better name clients. properly handle return codes...
authorStefan Kost <ensonic@users.sourceforge.net>
Wed, 4 Apr 2007 07:36:28 +0000 (07:36 +0000)
committerStefan Kost <ensonic@users.sourceforge.net>
Wed, 4 Apr 2007 07:36:28 +0000 (07:36 +0000)
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.

ChangeLog
ext/jack/gstjackaudiosink.c

index 9ef6452..488a1fd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2007-04-04  Stefan Kost  <ensonic@users.sf.net>
+
+       * 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.
+
 2007-04-03  David Schleef  <ds@schleef.org>
 
        * sys/glsink/glimagesink.c:
index 6f0ea57..d3efe8d 100644 (file)
@@ -26,7 +26,7 @@
  *
  * <refsect2>
  * <para>
- * A Sink that outputs data to Jack ports. 
+ * A Sink that outputs data to Jack ports.
  * </para>
  * <para>
  * It will create N Jack ports named out_&lt;num&gt; where &lt;num&gt; is starting from 1.
@@ -39,7 +39,7 @@
  * <para>
  * 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.
  * </para>
  * <para>
  * 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;
   }