diff options
Diffstat (limited to 'libempathy/empathy-call-handler.c')
-rw-r--r-- | libempathy/empathy-call-handler.c | 46 |
1 files changed, 44 insertions, 2 deletions
diff --git a/libempathy/empathy-call-handler.c b/libempathy/empathy-call-handler.c index 336052654..0c84595d5 100644 --- a/libempathy/empathy-call-handler.c +++ b/libempathy/empathy-call-handler.c @@ -51,7 +51,9 @@ static guint signals[LAST_SIGNAL] = {0}; enum { PROP_TP_CALL = 1, PROP_GST_BUS, - PROP_CONTACT + PROP_CONTACT, + PROP_INITIAL_AUDIO, + PROP_INITIAL_VIDEO }; /* private structure */ @@ -61,6 +63,8 @@ typedef struct { EmpathyTpCall *call; EmpathyContact *contact; TfChannel *tfchannel; + gboolean initial_audio; + gboolean initial_video; FsElementAddedNotifier *fsnotifier; } EmpathyCallHandlerPriv; @@ -147,6 +151,12 @@ empathy_call_handler_set_property (GObject *object, case PROP_TP_CALL: priv->call = g_value_dup_object (value); break; + case PROP_INITIAL_AUDIO: + priv->initial_audio = g_value_get_boolean (value); + break; + case PROP_INITIAL_VIDEO: + priv->initial_video = g_value_get_boolean (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } @@ -166,6 +176,12 @@ empathy_call_handler_get_property (GObject *object, case PROP_TP_CALL: g_value_set_object (value, priv->call); break; + case PROP_INITIAL_AUDIO: + g_value_set_boolean (value, priv->initial_audio); + break; + case PROP_INITIAL_VIDEO: + g_value_set_boolean (value, priv->initial_video); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } @@ -198,6 +214,20 @@ empathy_call_handler_class_init (EmpathyCallHandlerClass *klass) G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_TP_CALL, param_spec); + param_spec = g_param_spec_boolean ("initial-audio", + "initial-audio", "Whether the call should start with audio", + TRUE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_INITIAL_AUDIO, + param_spec); + + param_spec = g_param_spec_boolean ("initial-video", + "initial-video", "Whether the call should start with video", + FALSE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_INITIAL_VIDEO, + param_spec); + signals[CONFERENCE_ADDED] = g_signal_new ("conference-added", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, @@ -242,6 +272,17 @@ empathy_call_handler_new_for_contact (EmpathyContact *contact) } EmpathyCallHandler * +empathy_call_handler_new_for_contact_with_streams (EmpathyContact *contact, + gboolean audio, gboolean video) +{ + return EMPATHY_CALL_HANDLER (g_object_new (EMPATHY_TYPE_CALL_HANDLER, + "contact", contact, + "initial-audio", audio, + "initial-video", video, + NULL)); +} + +EmpathyCallHandler * empathy_call_handler_new_for_channel (EmpathyTpCall *call) { return EMPATHY_CALL_HANDLER (g_object_new (EMPATHY_TYPE_CALL_HANDLER, @@ -457,7 +498,8 @@ empathy_call_handler_request_cb (EmpathyDispatchOperation *operation, empathy_call_handler_start_tpfs (self); - empathy_tp_call_to (priv->call, priv->contact); + empathy_tp_call_to (priv->call, priv->contact, + priv->initial_audio, priv->initial_video); empathy_dispatch_operation_claim (operation); } |