sys/oss/: Post decent (and translated) error message when we can't open the audio...
authorTim-Philipp Müller <tim@centricular.net>
Fri, 7 Dec 2007 20:07:49 +0000 (20:07 +0000)
committerTim-Philipp Müller <tim@centricular.net>
Fri, 7 Dec 2007 20:07:49 +0000 (20:07 +0000)
Original commit message from CVS:
* sys/oss/gstossaudio.c: (plugin_init):
* sys/oss/gstosssink.c: (gst_oss_sink_open):
* sys/oss/gstosssrc.c: (gst_oss_src_open):
Post decent (and translated) error message when we can't
open the audio device for some reason.

ChangeLog
sys/oss/gstossaudio.c
sys/oss/gstosssink.c
sys/oss/gstosssrc.c

index 9230963..cff07bd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2007-12-07  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * sys/oss/gstossaudio.c: (plugin_init):
+       * sys/oss/gstosssink.c: (gst_oss_sink_open):
+       * sys/oss/gstosssrc.c: (gst_oss_src_open):
+         Post decent (and translated) error message when we can't
+         open the audio device for some reason.
+
 2007-12-07  Jan Schmidt  <jan.schmidt@sun.com>
 
        * sys/oss/gstosssink.c:
index 165e693..69c6745 100644 (file)
@@ -28,6 +28,7 @@
 #include "gstosssrc.h"
 
 GST_DEBUG_CATEGORY (oss_debug);
+#define GST_CAT_DEFAULT oss_debug
 
 static gboolean
 plugin_init (GstPlugin * plugin)
@@ -44,7 +45,8 @@ plugin_init (GstPlugin * plugin)
   GST_DEBUG_CATEGORY_INIT (oss_debug, "oss", 0, "OSS elements");
 
 #ifdef ENABLE_NLS
-  setlocale (LC_ALL, "");
+  GST_DEBUG ("binding text domain %s to locale dir %s", GETTEXT_PACKAGE,
+      LOCALEDIR);
   bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
 #endif /* ENABLE_NLS */
 
index 83c8847..17f3964 100644 (file)
@@ -77,6 +77,8 @@
 #include "common.h"
 #include "gstosssink.h"
 
+#include <gst/gst-i18n-plugin.h>
+
 GST_DEBUG_CATEGORY_EXTERN (oss_debug);
 #define GST_CAT_DEFAULT oss_debug
 
@@ -396,6 +398,8 @@ gst_oss_sink_open (GstAudioSink * asink)
     switch (errno) {
       case EBUSY:
         goto busy;
+      case EACCES:
+        goto no_permission;
       default:
         goto open_failed;
     }
@@ -406,12 +410,23 @@ gst_oss_sink_open (GstAudioSink * asink)
   /* ERRORS */
 busy:
   {
-    GST_ELEMENT_ERROR (oss, RESOURCE, BUSY, (NULL), (NULL));
+    GST_ELEMENT_ERROR (oss, RESOURCE, BUSY,
+        (_("Could not open audio device for playback. "
+                "Device is being used by another application.")), (NULL));
+    return FALSE;
+  }
+no_permission:
+  {
+    GST_ELEMENT_ERROR (oss, RESOURCE, OPEN_WRITE,
+        (_("Could not open audio device for playback."
+                "You don't have permission to open the device.")),
+        GST_ERROR_SYSTEM);
     return FALSE;
   }
 open_failed:
   {
-    GST_ELEMENT_ERROR (oss, RESOURCE, OPEN_WRITE, (NULL), GST_ERROR_SYSTEM);
+    GST_ELEMENT_ERROR (oss, RESOURCE, OPEN_WRITE,
+        (_("Could not open audio device for playback.")), GST_ERROR_SYSTEM);
     return FALSE;
   }
 }
index 3d8f3f7..36aa92d 100644 (file)
@@ -67,6 +67,8 @@
 #include "gstosssrc.h"
 #include "common.h"
 
+#include <gst/gst-i18n-plugin.h>
+
 GST_DEBUG_CATEGORY_EXTERN (oss_debug);
 #define GST_CAT_DEFAULT oss_debug
 
@@ -342,8 +344,14 @@ gst_oss_src_open (GstAudioSrc * asrc)
   mode |= O_NONBLOCK;
 
   oss->fd = open (oss->device, mode, 0);
-  if (oss->fd == -1)
-    goto open_failed;
+  if (oss->fd == -1) {
+    switch (errno) {
+      case EACCES:
+        goto no_permission;
+      default:
+        goto open_failed;
+    }
+  }
 
   if (!oss->mixer) {
     oss->mixer = gst_ossmixer_new ("/dev/mixer", GST_OSS_MIXER_CAPTURE);
@@ -355,11 +363,20 @@ gst_oss_src_open (GstAudioSrc * asrc)
   }
   return TRUE;
 
+no_permission:
+  {
+    GST_ELEMENT_ERROR (oss, RESOURCE, OPEN_READ,
+        (_("Could not open audio device for recording."
+                "You don't have permission to open the device.")),
+        GST_ERROR_SYSTEM);
+    return FALSE;
+  }
 open_failed:
   {
     GST_ELEMENT_ERROR (oss, RESOURCE, OPEN_READ,
+        (_("Could not open audio device for recording.")),
         ("Unable to open device %s for recording: %s",
-            oss->device, g_strerror (errno)), (NULL));
+            oss->device, g_strerror (errno)));
     return FALSE;
   }
 }