summaryrefslogtreecommitdiff
path: root/telepathy-glib/base-call-channel.c
diff options
context:
space:
mode:
authorOlivier CrĂȘte <olivier.crete@collabora.com>2011-12-26 23:48:52 -0500
committerXavier Claessens <xavier.claessens@collabora.co.uk>2012-01-10 09:52:46 +0100
commit85cb6c819840038dad1dc11ae3ede705fd0ff91f (patch)
tree85d7354d487e3059fd713e28482a41d50c1e6798 /telepathy-glib/base-call-channel.c
parent217d464526c6b5ea370b40249249825fdc42216f (diff)
downloadtelepathy-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.c41
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
{