static GObject * tp_streamed_media_constructor (GType type, guint n_construct_params, GObjectConstructParam *construct_params) { GObject *object; EmpathyTpStreamedMedia *call; EmpathyTpStreamedMediaPriv *priv; object = G_OBJECT_CLASS (empathy_tp_streamed_media_parent_class)->constructor (type, n_construct_params, construct_params); call = EMPATHY_TP_STREAMED_MEDIA (object); priv = GET_PRIV (call); /* Setup streamed media channel */ g_signal_connect (priv->channel, "invalidated", G_CALLBACK (tp_streamed_media_channel_invalidated_cb), call); tp_cli_channel_type_streamed_media_connect_to_stream_added (priv->channel, tp_streamed_media_stream_added_cb, NULL, NULL, G_OBJECT (call), NULL); tp_cli_channel_type_streamed_media_connect_to_stream_removed (priv->channel, tp_streamed_media_stream_removed_cb, NULL, NULL, G_OBJECT (call), NULL); tp_cli_channel_type_streamed_media_connect_to_stream_state_changed (priv->channel, tp_streamed_media_stream_state_changed_cb, NULL, NULL, G_OBJECT (call), NULL); tp_cli_channel_type_streamed_media_connect_to_stream_direction_changed (priv->channel, tp_streamed_media_stream_direction_changed_cb, NULL, NULL, G_OBJECT (call), NULL); tp_cli_channel_type_streamed_media_connect_to_stream_error (priv->channel, tp_streamed_media_stream_error_cb, NULL, NULL, G_OBJECT (call), NULL); tp_cli_channel_type_streamed_media_call_list_streams (priv->channel, -1, tp_streamed_media_request_streams_cb, NULL, NULL, G_OBJECT (call)); /* Is the call incoming? */ priv->is_incoming = !tp_channel_get_requested (priv->channel); /* Get the remote contact */ empathy_tp_contact_factory_get_from_handle ( tp_channel_borrow_connection (priv->channel), tp_channel_get_handle (priv->channel, NULL), tp_streamed_media_got_contact_cb, NULL, NULL, object); /* Update status when members changes */ tp_streamed_media_update_status (call); tp_g_signal_connect_object (priv->channel, "group-members-changed", G_CALLBACK (tp_streamed_media_update_status), call, G_CONNECT_SWAPPED); return object; }
NS_IMETHODIMP csTpChannelTypeStreamedMedia::ConnectToStreamError(csITpChannelTypeStreamedMediaStreamErrorObserver *observer) { if (!m_Proxy) return NS_ERROR_NOT_INITIALIZED; NS_ENSURE_ARG_POINTER(observer); if (!m_StreamErrorObservers) { m_StreamErrorObservers = do_CreateInstance(NS_ARRAY_CONTRACTID); tp_cli_channel_type_streamed_media_connect_to_stream_error(m_Proxy, StreamErrorSignalCallback, this, NULL, NULL, NULL); } m_StreamErrorObservers->AppendElement(observer, PR_FALSE); return NS_OK; }