libpurple/mediamanager.c

changeset 36327
8a6f23f61052
parent 36326
f80210352fb3
child 36328
cfe439dd03f1
--- a/libpurple/mediamanager.c	Thu Oct 02 23:46:22 2014 +0200
+++ b/libpurple/mediamanager.c	Tue Aug 12 14:39:08 2014 +0200
@@ -313,7 +313,7 @@
 {
 #ifdef USE_VV
 	PurpleMedia *media;
-	gboolean signal_ret;
+	guint signal_id;
 
 	media = PURPLE_MEDIA(g_object_new(purple_media_get_type(),
 			     "manager", manager,
@@ -322,12 +322,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);

mercurial