diff options
author | Will Thompson <will.thompson@collabora.co.uk> | 2012-02-17 18:18:44 +0000 |
---|---|---|
committer | Will Thompson <will.thompson@collabora.co.uk> | 2012-02-23 12:46:25 +0000 |
commit | 035f99f9c5ea8dbff493555921b6056756106215 (patch) | |
tree | 421551fa29e21448436e5c06f1416d63ef7a521f /src | |
parent | 46c47589c95f923453b9f4e3fe4aa6d648e8447b (diff) | |
download | telepathy-gabble-035f99f9c5ea8dbff493555921b6056756106215.tar.gz |
JingleFactory: emit ::new-session for outgoing sessions too
Diffstat (limited to 'src')
-rw-r--r-- | src/jingle-factory.c | 17 | ||||
-rw-r--r-- | src/jingle-mint.c | 7 |
2 files changed, 17 insertions, 7 deletions
diff --git a/src/jingle-factory.c b/src/jingle-factory.c index db73f4993..db33e5263 100644 --- a/src/jingle-factory.c +++ b/src/jingle-factory.c @@ -227,11 +227,15 @@ gabble_jingle_factory_class_init (GabbleJingleFactoryClass *cls) /* signal definitions */ - /* Emitted for new incoming sessions (but not new outgoing sessions!) */ + /* + * @session: a fresh new Jingle session for your listening pleasure + * @initiated_locally: %TRUE if this is a new outgoing session; %FALSE if it + * is a new incoming session + */ signals[NEW_SESSION] = g_signal_new ("new-session", G_TYPE_FROM_CLASS (cls), G_SIGNAL_RUN_LAST, - 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, - G_TYPE_NONE, 1, GABBLE_TYPE_JINGLE_SESSION); + 0, NULL, NULL, gabble_marshal_VOID__OBJECT_BOOL, + G_TYPE_NONE, 2, GABBLE_TYPE_JINGLE_SESSION, G_TYPE_BOOLEAN); } GabbleJingleFactory * @@ -400,7 +404,7 @@ jingle_cb ( * signal listeners. */ if (new_session) - g_signal_emit (self, signals[NEW_SESSION], 0, sess); + g_signal_emit (self, signals[NEW_SESSION], 0, sess, FALSE); /* all went well, we can acknowledge the IQ */ wocky_porter_acknowledge_iq (porter, msg, NULL); @@ -543,7 +547,10 @@ gabble_jingle_factory_create_session (GabbleJingleFactory *fac, const gchar *jid, gboolean local_hold) { - return create_session (fac, NULL, jid, local_hold); + GabbleJingleSession *session = create_session (fac, NULL, jid, local_hold); + + g_signal_emit (fac, signals[NEW_SESSION], 0, session, TRUE); + return session; } void diff --git a/src/jingle-mint.c b/src/jingle-mint.c index dcd525794..97e83b80a 100644 --- a/src/jingle-mint.c +++ b/src/jingle-mint.c @@ -59,6 +59,7 @@ static void connection_status_changed_cb ( static void factory_new_session_cb ( GabbleJingleFactory *factory, GabbleJingleSession *session, + gboolean initiated_locally, gpointer user_data); G_DEFINE_TYPE (GabbleJingleMint, gabble_jingle_mint, G_TYPE_OBJECT) @@ -237,12 +238,14 @@ static void factory_new_session_cb ( GabbleJingleFactory *factory, GabbleJingleSession *session, + gboolean initiated_locally, gpointer user_data) { GabbleJingleMint *self = GABBLE_JINGLE_MINT (user_data); - /* Proxy the signal outwards */ - g_signal_emit (self, signals[NEW_SESSION], 0, session); + /* Proxy the signal outwards if this is a new incoming session. */ + if (!initiated_locally) + g_signal_emit (self, signals[NEW_SESSION], 0, session); } GabbleJingleFactory * |