diff options
author | Olivier CrĂȘte <olivier.crete@collabora.com> | 2012-02-23 21:54:21 -0500 |
---|---|---|
committer | Olivier CrĂȘte <olivier.crete@collabora.com> | 2012-02-23 21:54:21 -0500 |
commit | 8517957e4d266351eb1dd0e0b2e8834e6a163248 (patch) | |
tree | 29d75c5104675d0d13ff75985c41a6bcd2657697 /rakia | |
parent | 86ded282b0416ab12583e1da0d21670aac632b6d (diff) |
Make Hold/Unhold work
Diffstat (limited to 'rakia')
-rw-r--r-- | rakia/call-channel.c | 2 | ||||
-rw-r--r-- | rakia/sip-media.c | 5 | ||||
-rw-r--r-- | rakia/sip-session.c | 7 |
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 * |