diff options
Diffstat (limited to 'src/ring-conference-channel.c')
-rw-r--r-- | src/ring-conference-channel.c | 87 |
1 files changed, 33 insertions, 54 deletions
diff --git a/src/ring-conference-channel.c b/src/ring-conference-channel.c index 5989653..ca22fba 100644 --- a/src/ring-conference-channel.c +++ b/src/ring-conference-channel.c @@ -1765,29 +1765,34 @@ static void reply_to_modem_call_request_conference(ModemCallService *_service, ModemRequest *request, GError *error, gpointer _channel); static gboolean -ring_conference_channel_create_streams(RingConferenceChannel *_self, - guint handle, - gboolean audio, - gboolean video, - GError **error) +ring_conference_channel_create_streams (RingConferenceChannel *_self, + guint handle, + gboolean audio, + gboolean video, + GError **error) { RingConferenceChannel *self = RING_CONFERENCE_CHANNEL(_self); RingConferenceChannelPrivate *priv = self->priv; ModemCallService *service; + TpBaseConnection *baseconn; (void)audio; (void)video; - if (priv->streams_created) { - DEBUG("Already associated with a conference"); - return TRUE; - } + if (priv->streams_created) + { + DEBUG("Already associated with a conference"); + return TRUE; + } + priv->streams_created = 1; - if (!ring_connection_validate_initial_members( - RING_CONNECTION(tp_base_channel_get_connection(TP_BASE_CHANNEL(self))), - priv->initial_members, - error)) - return FALSE; + baseconn = tp_base_channel_get_connection (TP_BASE_CHANNEL (self)); + + if (!ring_connection_validate_initial_members (RING_CONNECTION (baseconn), + priv->initial_members, error)) + { + return FALSE; + } service = ring_conference_channel_get_call_service (self); @@ -1799,32 +1804,23 @@ ring_conference_channel_create_streams(RingConferenceChannel *_self, } void -ring_conference_channel_initial_audio(RingConferenceChannel *self, - RingMediaManager *manager, - gpointer channelrequest) +ring_conference_channel_initial_audio (RingConferenceChannel *self) { RingConferenceChannelPrivate *priv = self->priv; ModemCallService *service; ModemRequest *request; - DEBUG("%s(%p, %p, %p) called", __func__, self, manager, channelrequest); + DEBUG ("(%p)", self); priv->streams_created = 1; service = ring_conference_channel_get_call_service (self), request = modem_call_request_conference (service, - reply_to_modem_call_request_conference, - self); + reply_to_modem_call_request_conference, + self); ring_conference_channel_queue_request (self, request); - - modem_request_add_qdatas( - request, - g_type_qname(RING_TYPE_MEDIA_MANAGER), g_object_ref(manager), g_object_unref, - /* XXX - GDestroyNotify for channelrequest */ - g_quark_from_static_string("RingChannelRequest"), channelrequest, NULL, - NULL); } static void @@ -1835,41 +1831,24 @@ reply_to_modem_call_request_conference(ModemCallService *_service, { RingConferenceChannel *self = RING_CONFERENCE_CHANNEL(_self); RingConferenceChannelPrivate *priv = self->priv; - gpointer channelrequest; - GError error0[1] = {{ - TP_ERRORS, TP_ERROR_NOT_AVAILABLE, "Conference channel already exists" - }}; ring_conference_channel_dequeue_request (self, request); g_assert(priv->conf_created == FALSE); + if (error) { - DEBUG("Call.CreateMultiparty with channel %s (%p) failed: " GERROR_MSG_FMT, - self->nick, self, GERROR_MSG_CODE(error)); - } - else - { - priv->conf_created = TRUE; - DEBUG("Call.CreateMultiparty with channel %s (%p) returned", - self->nick, self); - } + DEBUG("Call.CreateMultiparty with channel %s (%p) failed: " + GERROR_MSG_FMT, self->nick, self, GERROR_MSG_CODE(error)); + ring_conference_channel_release(_self, 0, 0, error); + ring_conference_channel_close_impl(_self, FALSE, FALSE); + return; + } - channelrequest = modem_request_steal_data(request, "RingChannelRequest"); - if (channelrequest) { - RingMediaManager *manager = modem_request_get_data(request, "RingMediaManager"); - - ring_media_manager_emit_new_channel(manager, - channelrequest, self, error ? error0 : NULL); - } - else if (error) { - ring_conference_channel_release(_self, 0, 0, error); - ring_conference_channel_close_impl(_self, FALSE, FALSE); - } - else { - ring_conference_channel_emit_initial(_self); - } + priv->conf_created = TRUE; + DEBUG("VoiceCallManager.CreateMultiparty with channel %s (%p) returned", + self->nick, self); } /* ---------------------------------------------------------------------- */ |