summaryrefslogtreecommitdiff
path: root/rakia
diff options
context:
space:
mode:
authorOlivier CrĂȘte <olivier.crete@collabora.com>2012-02-23 21:54:21 -0500
committerOlivier CrĂȘte <olivier.crete@collabora.com>2012-02-23 21:54:21 -0500
commit8517957e4d266351eb1dd0e0b2e8834e6a163248 (patch)
tree29d75c5104675d0d13ff75985c41a6bcd2657697 /rakia
parent86ded282b0416ab12583e1da0d21670aac632b6d (diff)
Make Hold/Unhold work
Diffstat (limited to 'rakia')
-rw-r--r--rakia/call-channel.c2
-rw-r--r--rakia/sip-media.c5
-rw-r--r--rakia/sip-session.c7
3 files changed, 8 insertions, 6 deletions
diff --git a/rakia/call-channel.c b/rakia/call-channel.c
index 3c99a9e..b7f29ac 100644
--- a/rakia/call-channel.c
+++ b/rakia/call-channel.c
@@ -432,9 +432,9 @@ rakia_call_channel_hold_state_changed (TpBaseMediaCallChannel *bmcc,
{
case TP_LOCAL_HOLD_STATE_PENDING_HOLD:
case TP_LOCAL_HOLD_STATE_HELD:
+ case TP_LOCAL_HOLD_STATE_PENDING_UNHOLD:
rakia_sip_session_set_hold_requested (self->priv->session, TRUE);
break;
- case TP_LOCAL_HOLD_STATE_PENDING_UNHOLD:
case TP_LOCAL_HOLD_STATE_UNHELD:
rakia_sip_session_set_hold_requested (self->priv->session, FALSE);
break;
diff --git a/rakia/sip-media.c b/rakia/sip-media.c
index 2fe0cae..9f013a6 100644
--- a/rakia/sip-media.c
+++ b/rakia/sip-media.c
@@ -371,7 +371,6 @@ static RakiaDirection
priv_get_sdp_direction (RakiaSipMedia *media, gboolean authoritative)
{
RakiaSipMediaPrivate *priv = RAKIA_SIP_MEDIA_GET_PRIVATE (media);
-
RakiaDirection direction = priv->requested_direction;
if (!authoritative)
@@ -379,7 +378,7 @@ priv_get_sdp_direction (RakiaSipMedia *media, gboolean authoritative)
/* Don't allow send, only receive if a hold is requested */
if (priv->hold_requested)
- direction &= RAKIA_DIRECTION_RECEIVE;
+ direction &= RAKIA_DIRECTION_SEND;
if (!authoritative)
rakia_sip_media_set_direction (media, direction);
@@ -1156,8 +1155,6 @@ rakia_sip_media_set_hold_requested (RakiaSipMedia *media,
return;
media->priv->hold_requested = hold_requested;
-
- rakia_sip_media_local_updated (media);
}
diff --git a/rakia/sip-session.c b/rakia/sip-session.c
index 44e8f4b..b52abd0 100644
--- a/rakia/sip-session.c
+++ b/rakia/sip-session.c
@@ -1734,17 +1734,22 @@ rakia_sip_session_set_hold_requested (RakiaSipSession *session,
if (session->priv->hold_requested == hold_requested)
return;
+ SESSION_DEBUG (session, "set hold: %d", hold_requested);
+
session->priv->hold_requested = hold_requested;
for (i = 0; i < priv->medias->len; i++)
{
RakiaSipMedia *media = g_ptr_array_index (priv->medias, i);
- if (!media)
+ if (media == NULL)
continue;
rakia_sip_media_set_hold_requested (media, hold_requested);
}
+
+ rakia_sip_session_media_changed (session);
+
}
GPtrArray *