diff pidgin/gtkmedia.c @ 26165:0e8814c437b2

Add active elements to PurpleMediaManager. These are the elements that will be created when media sessions require new srcs or sinks.
author Mike Ruprecht <maiku@soc.pidgin.im>
date Wed, 04 Feb 2009 09:27:27 +0000
parents fc100e71de5d
children cc96a5ec4782
line wrap: on
line diff
--- a/pidgin/gtkmedia.c	Tue Feb 03 23:34:53 2009 +0000
+++ b/pidgin/gtkmedia.c	Wed Feb 04 09:27:27 2009 +0000
@@ -785,34 +785,74 @@
 	return TRUE;
 }
 
+static GstElement *
+create_default_video_src(void)
+{
+	GstElement *ret = NULL;
+	purple_media_video_init_src(&ret);
+	return ret;
+}
+
+static GstElement *
+create_default_video_sink(void)
+{
+	GstElement *ret = NULL;
+	purple_media_video_init_recv(&ret);
+	return ret;
+}
+
+static GstElement *
+create_default_audio_src(void)
+{
+	GstElement *ret = NULL, *level = NULL;
+	purple_media_audio_init_src(&ret, &level);
+	return ret;
+}
+
+static GstElement *
+create_default_audio_sink(void)
+{
+	GstElement *ret = NULL, *level = NULL;
+	purple_media_audio_init_recv(&ret, &level);
+	return ret;
+}
+
 static PurpleMediaElementInfo default_video_src =
 {
 	"pidgindefaultvideosrc",	/* id */
 	PURPLE_MEDIA_ELEMENT_VIDEO	/* type */
+			| PURPLE_MEDIA_ELEMENT_SRC
 			| PURPLE_MEDIA_ELEMENT_ONE_SRC
 			| PURPLE_MEDIA_ELEMENT_UNIQUE,
+	create_default_video_src,	/* create */
 };
 
 static PurpleMediaElementInfo default_video_sink =
 {
 	"pidgindefaultvideosink",	/* id */
 	PURPLE_MEDIA_ELEMENT_VIDEO	/* type */
+			| PURPLE_MEDIA_ELEMENT_SINK
 			| PURPLE_MEDIA_ELEMENT_ONE_SINK,
+	create_default_video_sink,	/* create */
 };
 
 static PurpleMediaElementInfo default_audio_src =
 {
 	"pidgindefaultaudiosrc",	/* id */
 	PURPLE_MEDIA_ELEMENT_AUDIO	/* type */
+			| PURPLE_MEDIA_ELEMENT_SRC
 			| PURPLE_MEDIA_ELEMENT_ONE_SRC
 			| PURPLE_MEDIA_ELEMENT_UNIQUE,
+	create_default_audio_src,	/* create */
 };
 
 static PurpleMediaElementInfo default_audio_sink =
 {
 	"pidgindefaultaudiosink",	/* id */
 	PURPLE_MEDIA_ELEMENT_AUDIO	/* type */
+			| PURPLE_MEDIA_ELEMENT_SINK
 			| PURPLE_MEDIA_ELEMENT_ONE_SINK,
+	create_default_audio_sink,	/* create */
 };
 
 void
@@ -823,10 +863,10 @@
 			 G_CALLBACK(pidgin_media_new_cb), NULL);
 
 	purple_debug_info("gtkmedia", "Registering media element types\n");
-	purple_media_manager_register_element(manager, &default_video_src);
-	purple_media_manager_register_element(manager, &default_video_sink);
-	purple_media_manager_register_element(manager, &default_audio_src);
-	purple_media_manager_register_element(manager, &default_audio_sink);
+	purple_media_manager_set_active_element(manager, &default_video_src);
+	purple_media_manager_set_active_element(manager, &default_video_sink);
+	purple_media_manager_set_active_element(manager, &default_audio_src);
+	purple_media_manager_set_active_element(manager, &default_audio_sink);
 }
 
 #endif  /* USE_VV */