Wed, 22 Jun 2016 10:15:09 +0200
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 */