[empathy] Return error when the audio source can not be started
- From: Guillaume Desmottes <gdesmott src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [empathy] Return error when the audio source can not be started
- Date: Mon, 29 Mar 2010 15:38:49 +0000 (UTC)
commit ee584165872d730f364018915231e014fb0ca37f
Author: Olivier Crête <olivier crete collabora co uk>
Date: Sat Mar 6 18:36:30 2010 -0500
Return error when the audio source can not be started
src/empathy-call-window.c | 35 +++++++++++++++++++++++++++++++----
1 files changed, 31 insertions(+), 4 deletions(-)
---
diff --git a/src/empathy-call-window.c b/src/empathy-call-window.c
index 2e1be50..f565f1f 100644
--- a/src/empathy-call-window.c
+++ b/src/empathy-call-window.c
@@ -2123,16 +2123,41 @@ empathy_call_window_sink_added_cb (EmpathyCallHandler *handler,
EmpathyCallWindow *self = EMPATHY_CALL_WINDOW (user_data);
EmpathyCallWindowPriv *priv = GET_PRIV (self);
GstPad *pad;
+ gboolean retval = FALSE;
switch (media_type)
{
case TP_MEDIA_STREAM_TYPE_AUDIO:
- gst_bin_add (GST_BIN (priv->pipeline), priv->audio_input);
+ if (!gst_bin_add (GST_BIN (priv->pipeline), priv->audio_input))
+ {
+ g_warning ("Could not add audio source to pipeline");
+ break;
+ }
pad = gst_element_get_static_pad (priv->audio_input, "src");
- gst_pad_link (pad, sink);
+ if (!pad)
+ {
+ gst_bin_remove (GST_BIN (priv->pipeline), priv->audio_input);
+ g_warning ("Could not get source pad from audio source");
+ break;
+ }
- gst_element_set_state (priv->audio_input, GST_STATE_PLAYING);
+ if (GST_PAD_LINK_FAILED (gst_pad_link (pad, sink)))
+ {
+ gst_bin_remove (GST_BIN (priv->pipeline), priv->audio_input);
+ g_warning ("Could not link audio source to farsight");
+ break;
+ }
+
+ if (gst_element_set_state (priv->audio_input, GST_STATE_PLAYING) == GST_STATE_CHANGE_FAILURE)
+ {
+ g_warning ("Could not start audio source");
+ gst_element_set_state (priv->audio_input, GST_STATE_NULL);
+ gst_bin_remove (GST_BIN (priv->pipeline), priv->audio_input);
+ break;
+ }
+
+ retval = TRUE;
break;
case TP_MEDIA_STREAM_TYPE_VIDEO:
if (priv->video_input != NULL)
@@ -2142,13 +2167,15 @@ empathy_call_window_sink_added_cb (EmpathyCallHandler *handler,
pad = gst_element_get_request_pad (priv->video_tee, "src%d");
gst_pad_link (pad, sink);
}
+
+ retval = TRUE;
}
break;
default:
g_assert_not_reached ();
}
- return TRUE;
+ return retval;
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]