summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWill Thompson <will.thompson@collabora.co.uk>2012-02-17 18:18:44 +0000
committerWill Thompson <will.thompson@collabora.co.uk>2012-02-23 12:46:25 +0000
commit035f99f9c5ea8dbff493555921b6056756106215 (patch)
tree421551fa29e21448436e5c06f1416d63ef7a521f /src
parent46c47589c95f923453b9f4e3fe4aa6d648e8447b (diff)
downloadtelepathy-gabble-035f99f9c5ea8dbff493555921b6056756106215.tar.gz
JingleFactory: emit ::new-session for outgoing sessions too
Diffstat (limited to 'src')
-rw-r--r--src/jingle-factory.c17
-rw-r--r--src/jingle-mint.c7
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 *