/pidgin/main: 2051b23e562b: mediamanager: add "elements-changed"...
Jakub Adam <[email protected]> Mon, 18 Jul 2016 00:33:09 -0400
| Newsgroups | gmane.comp.gnome.gaim.cvs |
|---|---|
| Message-ID | <[email protected]> |
Changeset: 2051b23e562b9f40c530f8ec98c49c73011e99a4 Author: Jakub Adam <[email protected]> Date: 2016-06-23 12:57 +0200 Branch: default URL: https://hg.pidgin.im/pidgin/main/rev/2051b23e562b Description: mediamanager: add "elements-changed" signal diffstat: libpurple/mediamanager.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 52 insertions(+), 0 deletions(-) diffs (107 lines): diff --git a/libpurple/mediamanager.c b/libpurple/mediamanager.c --- a/libpurple/mediamanager.c +++ b/libpurple/mediamanager.c @@ -132,6 +132,7 @@ enum { INIT_MEDIA, INIT_PRIVATE_MEDIA, UI_CAPS_CHANGED, + ELEMENTS_CHANGED, LAST_SIGNAL }; static guint purple_media_manager_signals[LAST_SIGNAL] = {0}; @@ -198,6 +199,14 @@ purple_media_manager_class_init (PurpleM G_TYPE_NONE, 2, PURPLE_MEDIA_TYPE_CAPS, PURPLE_MEDIA_TYPE_CAPS); + purple_media_manager_signals[ELEMENTS_CHANGED] = + g_signal_new("elements-changed", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, + 0, NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + g_type_class_add_private(klass, sizeof(PurpleMediaManagerPrivate)); } @@ -1268,6 +1277,30 @@ purple_media_manager_get_element_info(Pu return NULL; } +static GQuark +element_info_to_detail(PurpleMediaElementInfo *info) +{ + PurpleMediaElementType type; + + type = purple_media_element_info_get_element_type(info); + + if (type & PURPLE_MEDIA_ELEMENT_AUDIO) { + if (type & PURPLE_MEDIA_ELEMENT_SRC) { + return g_quark_from_string("audiosrc"); + } else if (type & PURPLE_MEDIA_ELEMENT_SINK) { + return g_quark_from_string("audiosink"); + } + } else if (type & PURPLE_MEDIA_ELEMENT_VIDEO) { + if (type & PURPLE_MEDIA_ELEMENT_SRC) { + return g_quark_from_string("videosrc"); + } else if (type & PURPLE_MEDIA_ELEMENT_SINK) { + return g_quark_from_string("videosink"); + } + } + + return 0; +} + gboolean purple_media_manager_register_element(PurpleMediaManager *manager, PurpleMediaElementInfo *info) @@ -1275,6 +1308,7 @@ purple_media_manager_register_element(Pu #ifdef USE_VV PurpleMediaElementInfo *info2; gchar *id; + GQuark detail; g_return_val_if_fail(PURPLE_IS_MEDIA_MANAGER(manager), FALSE); g_return_val_if_fail(info != NULL, FALSE); @@ -1290,6 +1324,14 @@ purple_media_manager_register_element(Pu manager->priv->elements = g_list_prepend(manager->priv->elements, info); + + detail = element_info_to_detail(info); + if (detail != 0) { + g_signal_emit(manager, + purple_media_manager_signals[ELEMENTS_CHANGED], + detail); + } + return TRUE; #else return FALSE; @@ -1302,6 +1344,7 @@ purple_media_manager_unregister_element( { #ifdef USE_VV PurpleMediaElementInfo *info; + GQuark detail; g_return_val_if_fail(PURPLE_IS_MEDIA_MANAGER(manager), FALSE); @@ -1321,9 +1364,18 @@ purple_media_manager_unregister_element( if (manager->priv->video_sink == info) manager->priv->video_sink = NULL; + detail = element_info_to_detail(info); + manager->priv->elements = g_list_remove( manager->priv->elements, info); g_object_unref(info); + + if (detail != 0) { + g_signal_emit(manager, + purple_media_manager_signals[ELEMENTS_CHANGED], + detail); + } + return TRUE; #else return FALSE; _______________________________________________ Commits mailing list [email protected] https://pidgin.im/cgi-bin/mailman/listinfo/commits