ext/hal/hal.*: Some small cleanups; deal with errors when parsing the HAL ALSA capabi...
authorTim-Philipp Müller <tim@centricular.net>
Wed, 7 Feb 2007 13:08:34 +0000 (13:08 +0000)
committerTim-Philipp Müller <tim@centricular.net>
Wed, 7 Feb 2007 13:08:34 +0000 (13:08 +0000)
Original commit message from CVS:
* ext/hal/hal.c: (gst_hal_get_string):
* ext/hal/hal.h:
Some small cleanups; deal with errors when parsing the HAL ALSA
capabilities a bit better.

ChangeLog
common
ext/hal/hal.c
ext/hal/hal.h

index 0b36834..f4da15e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2007-01-30  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * ext/hal/hal.c: (gst_hal_get_string):
+       * ext/hal/hal.h:
+         Some small cleanups; deal with errors when parsing the HAL ALSA
+         capabilities a bit better.
+
 2007-02-06  Tim-Philipp Müller  <tim at centricular dot net>
 
        * gst/smpte/gstsmpte.c: (gst_smpte_transition_type_get_type):
diff --git a/common b/common
index 8ba5dff..de43a8f 160000 (submodule)
--- a/common
+++ b/common
@@ -1 +1 @@
-Subproject commit 8ba5dffb5ee7e7daea1030f6b34bfef10f9801a3
+Subproject commit de43a8f3c629983e0bea0b8eb617e52ed35a6cda
index 9b55f6d..519258d 100644 (file)
  * Returns: a newly allocated #gchar string containing the appropriate pipeline
  * for UDI @udi, or NULL in the case of an error..
  */
-gchar *
+static gchar *
 gst_hal_get_string (const gchar * udi)
 {
   DBusConnection *connection;
   DBusError error;
   LibHalContext *ctx;
-  char *type, *string;
-  char *element;
-  int card, device;
+  char *string;
 
   dbus_error_init (&error);
 
@@ -66,23 +64,27 @@ gst_hal_get_string (const gchar * udi)
   string = NULL;
 
   if (libhal_device_query_capability (ctx, udi, "alsa", &error)) {
+    char *type, *element = NULL;
+
     type = libhal_device_get_property_string (ctx, udi, "alsa.type", &error);
-    if (strcmp (type, "playback") == 0) {
+    if (type != NULL && strcmp (type, "playback") == 0) {
       element = "alsasink";
-    } else if (strcmp (type, "capture") == 0) {
+    } else if (type != NULL && strcmp (type, "capture") == 0) {
       element = "alsasrc";
-    } else {
-      element = NULL;
     }
-    card = libhal_device_get_property_int (ctx, udi, "alsa.card", &error);
-    device = libhal_device_get_property_int (ctx, udi, "alsa.device", &error);
-    if (device == 0) {
-      /* handle default device specially to use
-       * dmix, dsnoop, and softvol if appropriate */
-      string = g_strdup_printf ("%s device=default:%d", element, card);
-    } else {
-      string =
-          g_strdup_printf ("%s device=plughw:%d,%d", element, card, device);
+    if (element) {
+      int card, device;
+
+      card = libhal_device_get_property_int (ctx, udi, "alsa.card", &error);
+      device = libhal_device_get_property_int (ctx, udi, "alsa.device", &error);
+      if (device == 0) {
+        /* handle default device specially to use
+         * dmix, dsnoop, and softvol if appropriate */
+        string = g_strdup_printf ("%s device=default:%d", element, card);
+      } else {
+        string =
+            g_strdup_printf ("%s device=plughw:%d,%d", element, card, device);
+      }
     }
   }
 
@@ -91,6 +93,10 @@ gst_hal_get_string (const gchar * udi)
 
   dbus_error_free (&error);
 
+  if (string == NULL) {
+    GST_WARNING ("Problem parsing HAL ALSA capabilities for udi %s", udi);
+  }
+
   return string;
 }
 
index 194d1ce..3d5bb05 100644 (file)
 
 G_BEGIN_DECLS
 
-gchar *         gst_hal_get_string            (const gchar *udi);
-
-GstElement *    gst_hal_render_bin_from_udi           (const gchar *udi);
-GstElement *    gst_hal_render_bin_from_description   (const gchar *description);
+GstElement *    gst_hal_render_bin_from_udi (const gchar *udi);
 
 GstElement *    gst_hal_get_audio_sink (const gchar *udi);
 GstElement *    gst_hal_get_audio_src  (const gchar *udi);