mediamanager: add purple_media_manager_enumerate_elements() media

Wed, 22 Jun 2016 10:15:09 +0200

author
Jakub Adam <jakub.adam@ktknet.cz>
date
Wed, 22 Jun 2016 10:15:09 +0200
branch
media
changeset 38951
8dabf58e5ba8
parent 38950
2db7702b262a
child 38952
1405adb18d28

mediamanager: add purple_media_manager_enumerate_elements()

libpurple/media-gst.h file | annotate | diff | comparison | revisions
libpurple/mediamanager.c file | annotate | diff | comparison | revisions
--- a/libpurple/media-gst.h	Wed Jun 22 09:37:16 2016 +0200
+++ b/libpurple/media-gst.h	Wed Jun 22 10:15:09 2016 +0200
@@ -149,6 +149,17 @@
 		PurpleMediaSessionType type, PurpleMedia *media,
 		const gchar *session_id, const gchar *participant);
 
+/**
+ * purple_media_manager_enumerate_elements:
+ * @manager: The media manager to use to obtain the element infos.
+ * @type: The type of element infos to get.
+ *
+ * Returns: A #GList of registered #PurpleMediaElementInfo instances that match
+ * @type.
+ */
+GList *purple_media_manager_enumerate_elements(PurpleMediaManager *manager,
+		PurpleMediaElementType type);
+
 PurpleMediaElementInfo *purple_media_manager_get_element_info(
 		PurpleMediaManager *manager, const gchar *name);
 gboolean purple_media_manager_register_element(PurpleMediaManager *manager,
--- a/libpurple/mediamanager.c	Wed Jun 22 09:37:16 2016 +0200
+++ b/libpurple/mediamanager.c	Wed Jun 22 10:15:09 2016 +0200
@@ -2175,6 +2175,28 @@
 #endif /* GST_CHECK_VERSION(1, 4, 0) */
 }
 
+GList *
+purple_media_manager_enumerate_elements(PurpleMediaManager *manager,
+		PurpleMediaElementType type)
+{
+	GList *result = NULL;
+	GList *i;
+
+	for (i = manager->priv->elements; i; i = i->next) {
+		PurpleMediaElementInfo *info = i->data;
+		PurpleMediaElementType type2;
+
+		type2 = purple_media_element_info_get_element_type(info);
+
+		if ((type2 & type) == type) {
+			g_object_ref(info);
+			result = g_list_prepend(result, info);
+		}
+	}
+
+	return result;
+}
+
 /*
  * PurpleMediaElementType
  */

mercurial