diff options
author | Olivier CrĂȘte <olivier.crete@collabora.com> | 2012-03-01 19:47:10 -0500 |
---|---|---|
committer | Olivier CrĂȘte <olivier.crete@collabora.com> | 2012-03-14 18:08:50 -0400 |
commit | cf32f035a8c34667cbb20e7d78afdf279c23b640 (patch) | |
tree | bb5b1a020f34330558e8142c7ec57f4d04bfccc8 /telepathy-glib/base-media-call-stream.c | |
parent | 7e87424f0f7aaa0d142d26332516a1a1a27d62bc (diff) | |
download | telepathy-glib-cf32f035a8c34667cbb20e7d78afdf279c23b640.tar.gz |
BaseMediaCallStream: Don't start sending during a failure report
Diffstat (limited to 'telepathy-glib/base-media-call-stream.c')
-rw-r--r-- | telepathy-glib/base-media-call-stream.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/telepathy-glib/base-media-call-stream.c b/telepathy-glib/base-media-call-stream.c index b884805b0..6665e39ec 100644 --- a/telepathy-glib/base-media-call-stream.c +++ b/telepathy-glib/base-media-call-stream.c @@ -211,6 +211,7 @@ struct _TpBaseMediaCallStreamPrivate gboolean local_sending; gboolean remotely_held; gboolean sending_stop_requested; + gboolean sending_failure; }; static GPtrArray *tp_base_media_call_stream_get_interfaces ( @@ -843,6 +844,9 @@ tp_base_media_call_stream_update_sending_state (TpBaseMediaCallStream *self) if (self->priv->remotely_held) goto done; + if (self->priv->sending_failure) + goto done; + sending = self->priv->local_sending; done: @@ -1188,10 +1192,9 @@ tp_base_media_call_stream_report_sending_failure ( if (self->priv->sending_state == TP_STREAM_FLOW_STATE_STOPPED) goto done; + self->priv->sending_failure = TRUE; self->priv->sending_stop_requested = FALSE; - self->priv->sending_state = TP_STREAM_FLOW_STATE_STOPPED; - g_object_notify (G_OBJECT (self), "sending-state"); if (channel != NULL && TP_IS_BASE_MEDIA_CALL_CHANNEL (channel)) was_unholding = _tp_base_media_call_channel_streams_sending_state_changed ( @@ -1201,9 +1204,12 @@ tp_base_media_call_stream_report_sending_failure ( klass->report_sending_failure (self, old_state, reason, dbus_reason, message); + g_object_notify (G_OBJECT (self), "sending-state"); tp_svc_call_stream_interface_media_emit_sending_state_changed (self, self->priv->sending_state); + self->priv->sending_failure = FALSE; + done: tp_svc_call_stream_interface_media_return_from_report_sending_failure ( context); |