diff options
author | Olivier CrĂȘte <olivier.crete@collabora.com> | 2011-12-26 23:48:52 -0500 |
---|---|---|
committer | Xavier Claessens <xavier.claessens@collabora.co.uk> | 2012-01-10 09:52:46 +0100 |
commit | 85cb6c819840038dad1dc11ae3ede705fd0ff91f (patch) | |
tree | 85d7354d487e3059fd713e28482a41d50c1e6798 /telepathy-glib/base-call-channel.c | |
parent | 217d464526c6b5ea370b40249249825fdc42216f (diff) | |
download | telepathy-glib-85cb6c819840038dad1dc11ae3ede705fd0ff91f.tar.gz |
Emit Initializing before initialised and accepted before active.
This should make it possible ot have slightly simpler clients
Diffstat (limited to 'telepathy-glib/base-call-channel.c')
-rw-r--r-- | telepathy-glib/base-call-channel.c | 41 |
1 files changed, 32 insertions, 9 deletions
diff --git a/telepathy-glib/base-call-channel.c b/telepathy-glib/base-call-channel.c index 475c09952..4fd27c60c 100644 --- a/telepathy-glib/base-call-channel.c +++ b/telepathy-glib/base-call-channel.c @@ -724,14 +724,20 @@ tp_base_call_channel_set_state (TpBaseCallChannel *self, self->priv->state != TP_CALL_STATE_INITIALISED) self->priv->flags &= ~TP_CALL_FLAG_LOCALLY_QUEUED; + if (tp_base_channel_is_registered (TP_BASE_CHANNEL (self))) + tp_svc_channel_type_call_emit_call_state_changed (self, self->priv->state, + self->priv->flags, self->priv->reason, self->priv->details); + if (self->priv->state != old_state && self->priv->state == TP_CALL_STATE_INITIALISING && tp_base_call_channel_is_connected (self)) - self->priv->state = TP_CALL_STATE_INITIALISED; - - if (tp_base_channel_is_registered (TP_BASE_CHANNEL (self))) - tp_svc_channel_type_call_emit_call_state_changed (self, self->priv->state, - self->priv->flags, self->priv->reason, self->priv->details); + { + self->priv->state = TP_CALL_STATE_INITIALISED; + if (tp_base_channel_is_registered (TP_BASE_CHANNEL (self))) + tp_svc_channel_type_call_emit_call_state_changed (self, + self->priv->state, self->priv->flags, self->priv->reason, + self->priv->details); + } } /** @@ -1188,10 +1194,14 @@ tp_base_call_channel_remote_accept (TpBaseCallChannel *self) self->priv->accepted = TRUE; tp_base_call_channel_set_state (self, - tp_base_call_channel_is_connected (self) ? TP_CALL_STATE_ACTIVE : TP_CALL_STATE_ACCEPTED, 0, TP_CALL_STATE_CHANGE_REASON_PROGRESS_MADE, "", ""); + if (tp_base_call_channel_is_connected (self)) + tp_base_call_channel_set_state (self, + TP_CALL_STATE_ACTIVE, + 0, TP_CALL_STATE_CHANGE_REASON_PROGRESS_MADE, "", ""); + if (klass->remote_accept) klass->remote_accept (self); } @@ -1211,11 +1221,18 @@ tp_base_call_channel_accept (TpSvcChannelTypeCall *iface, if (self->priv->state == TP_CALL_STATE_PENDING_INITIATOR) { tp_base_call_channel_set_state (self, - tp_base_call_channel_is_connected (self) ? - TP_CALL_STATE_INITIALISED : TP_CALL_STATE_INITIALISING, + TP_CALL_STATE_INITIALISING, tp_base_channel_get_self_handle ((TpBaseChannel *) self), TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", "User has accepted to start the call"); + if (tp_base_call_channel_is_connected (self)) + tp_base_call_channel_set_state (self, + TP_CALL_STATE_INITIALISED, + tp_base_channel_get_self_handle ((TpBaseChannel *) self), + TP_CALL_STATE_CHANGE_REASON_PROGRESS_MADE, "", + "User has accepted to start the call and we are connected"); + + } else { @@ -1230,11 +1247,17 @@ tp_base_call_channel_accept (TpSvcChannelTypeCall *iface, if (self->priv->state == TP_CALL_STATE_INITIALISED) { tp_base_call_channel_set_state (self, - tp_base_call_channel_is_connected (self) ? TP_CALL_STATE_ACTIVE : TP_CALL_STATE_ACCEPTED, tp_base_channel_get_self_handle ((TpBaseChannel *) self), TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", "User has accepted call"); + if (tp_base_call_channel_is_connected (self)) + tp_base_call_channel_set_state (self, + TP_CALL_STATE_ACTIVE, + tp_base_channel_get_self_handle ((TpBaseChannel *) self), + TP_CALL_STATE_CHANGE_REASON_PROGRESS_MADE, "", + "User has accepted call and we are connected"); + } else { |