Tue, 12 Aug 2014 14:39:08 +0200
media: make "init-media" signal handler optional
Change the logic so that the PurpleMedia instance isn't disposed when
"init-media" has no connected handlers.
We want the media object freed only when some signal callback function
explicitly returns FALSE, indicating an error during the initialization.
This is mostly useful for the imminent addition of private media streams.
| libpurple/mediamanager.c | file | annotate | diff | comparison | revisions |
--- a/libpurple/mediamanager.c Thu Oct 02 23:46:22 2014 +0200 +++ b/libpurple/mediamanager.c Tue Aug 12 14:39:08 2014 +0200 @@ -334,7 +334,7 @@ { #ifdef USE_VV PurpleMedia *media; - gboolean signal_ret; + guint signal_id; media = PURPLE_MEDIA(g_object_new(purple_media_get_type(), "manager", manager, @@ -343,12 +343,17 @@ "initiator", initiator, NULL)); - g_signal_emit(manager, purple_media_manager_signals[INIT_MEDIA], 0, - media, account, remote_user, &signal_ret); + signal_id = purple_media_manager_signals[INIT_MEDIA]; + + if (g_signal_has_handler_pending(manager, signal_id, 0, FALSE)) { + gboolean signal_ret; - if (signal_ret == FALSE) { - g_object_unref(media); - return NULL; + g_signal_emit(manager, signal_id, 0, media, account, remote_user, + &signal_ret); + if (signal_ret == FALSE) { + g_object_unref(media); + return NULL; + } } manager->priv->medias = g_list_append(manager->priv->medias, media);