aboutsummaryrefslogtreecommitdiffstats
path: root/src/empathy-call-window.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/empathy-call-window.c')
-rw-r--r--src/empathy-call-window.c31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/empathy-call-window.c b/src/empathy-call-window.c
index bd958aada..f3219d483 100644
--- a/src/empathy-call-window.c
+++ b/src/empathy-call-window.c
@@ -31,6 +31,8 @@
#include <telepathy-farsight/channel.h>
+#include <gst/farsight/fs-element-added-notifier.h>
+
#include <libempathy/empathy-tp-contact-factory.h>
#include <libempathy/empathy-call-factory.h>
#include <libempathy/empathy-utils.h>
@@ -153,6 +155,8 @@ struct _EmpathyCallWindowPriv
GstElement *funnel;
GstElement *liveadder;
+ FsElementAddedNotifier *fsnotifier;
+
guint context_id;
GTimer *timer;
@@ -678,6 +682,8 @@ empathy_call_window_init (EmpathyCallWindow *self)
GtkWidget *page;
GstBus *bus;
gchar *filename;
+ GKeyFile *keyfile;
+ GError *error = NULL;
filename = empathy_file_lookup ("empathy-call-window.ui", "src");
gui = empathy_builder_get_file (filename,
@@ -694,6 +700,7 @@ empathy_call_window_init (EmpathyCallWindow *self)
"ui_manager", &priv->ui_manager,
"menufullscreen", &priv->menu_fullscreen,
NULL);
+ g_free (filename);
empathy_builder_connect (gui, self,
"menuhangup", "activate", empathy_call_window_hangup_cb,
@@ -722,6 +729,25 @@ empathy_call_window_init (EmpathyCallWindow *self)
bus = gst_pipeline_get_bus (GST_PIPELINE (priv->pipeline));
gst_bus_add_watch (bus, empathy_call_window_bus_message, self);
+ priv->fsnotifier = fs_element_added_notifier_new ();
+ fs_element_added_notifier_add (priv->fsnotifier, GST_BIN (priv->pipeline));
+
+ keyfile = g_key_file_new ();
+ filename = empathy_file_lookup ("element-properties", "data");
+ if (g_key_file_load_from_file (keyfile, filename, G_KEY_FILE_NONE, &error))
+ {
+ fs_element_added_notifier_set_properties_from_keyfile (priv->fsnotifier,
+ keyfile);
+ }
+ else
+ {
+ g_warning ("Could not load element-properties file: %s", error->message);
+ g_key_file_free (keyfile);
+ g_clear_error (&error);
+ }
+ g_free (filename);
+
+
priv->remote_user_output_frame = gtk_frame_new (NULL);
gtk_widget_set_size_request (priv->remote_user_output_frame,
EMPATHY_VIDEO_WIDGET_DEFAULT_WIDTH, EMPATHY_VIDEO_WIDGET_DEFAULT_HEIGHT);
@@ -800,7 +826,6 @@ empathy_call_window_init (EmpathyCallWindow *self)
g_object_ref (priv->ui_manager);
g_object_unref (gui);
- g_free (filename);
}
/* Instead of specifying a width and a height, we specify only one size. That's
@@ -1064,6 +1089,10 @@ empathy_call_window_dispose (GObject *object)
g_object_unref (priv->video_tee);
priv->video_tee = NULL;
+ if (priv->fsnotifier != NULL)
+ g_object_unref (priv->fsnotifier);
+ priv->fsnotifier = NULL;
+
if (priv->timer_id != 0)
g_source_remove (priv->timer_id);
priv->timer_id = 0;