osxaudio: Fix error handling when selecting/opening devices

Post an element error when the CoreAudio device cannot be selected or opened.
Also ensure that we post a GST_ERROR with more detail.
This commit is contained in:
Nirbheek Chauhan 2016-01-15 03:56:49 +05:30 committed by Tim-Philipp Müller
parent 53c797d604
commit 6b760ead2a
2 changed files with 14 additions and 3 deletions

View file

@ -48,6 +48,7 @@
#endif #endif
#include <gst/gst.h> #include <gst/gst.h>
#include <gst/gst-i18n-plugin.h>
#include <gst/audio/audio-channels.h> #include <gst/audio/audio-channels.h>
#include "gstosxaudioringbuffer.h" #include "gstosxaudioringbuffer.h"
#include "gstosxaudiosink.h" #include "gstosxaudiosink.h"
@ -140,12 +141,22 @@ gst_osx_audio_ring_buffer_dispose (GObject * object)
static gboolean static gboolean
gst_osx_audio_ring_buffer_open_device (GstAudioRingBuffer * buf) gst_osx_audio_ring_buffer_open_device (GstAudioRingBuffer * buf)
{ {
GstObject *osxel = GST_OBJECT_PARENT (buf);
GstOsxAudioRingBuffer *osxbuf = GST_OSX_AUDIO_RING_BUFFER (buf); GstOsxAudioRingBuffer *osxbuf = GST_OSX_AUDIO_RING_BUFFER (buf);
if (!gst_core_audio_select_device (osxbuf->core_audio)) if (!gst_core_audio_select_device (osxbuf->core_audio)) {
GST_ELEMENT_ERROR (osxel, RESOURCE, NOT_FOUND,
(_("CoreAudio device not found")), (NULL));
return FALSE; return FALSE;
}
return gst_core_audio_open (osxbuf->core_audio); if (!gst_core_audio_open (osxbuf->core_audio)) {
GST_ELEMENT_ERROR (osxel, RESOURCE, OPEN_READ,
(_("CoreAudio device could not be opened")), (NULL));
return FALSE;
}
return TRUE;
} }
static gboolean static gboolean

View file

@ -1238,7 +1238,7 @@ gst_core_audio_select_device_impl (GstCoreAudio * core_audio)
device_id = default_device_id; device_id = default_device_id;
res = TRUE; res = TRUE;
} else { } else {
/* No device of required type available */ GST_ERROR ("No device of required type available");
res = FALSE; res = FALSE;
} }
} else { } else {