diff libpurple/media.c @ 25687:ddbea813862e

Notify the user which type of media session the remote user wants to initiate.
author Mike Ruprecht <maiku@soc.pidgin.im>
date Thu, 12 Jun 2008 03:59:26 +0000
parents 3bf9748fdef0
children 19e077a4cb62
line wrap: on
line diff
--- a/libpurple/media.c	Tue Jun 10 05:18:29 2008 +0000
+++ b/libpurple/media.c	Thu Jun 12 03:59:26 2008 +0000
@@ -83,6 +83,7 @@
 	ACCEPTED,
 	HANGUP,
 	REJECT,
+	GOT_REQUEST,
 	GOT_HANGUP,
 	GOT_ACCEPT,
 	NEW_CANDIDATE,
@@ -172,6 +173,10 @@
 					 G_SIGNAL_RUN_LAST, 0, NULL, NULL,
 					 g_cclosure_marshal_VOID__VOID,
 					 G_TYPE_NONE, 0);
+	purple_media_signals[GOT_REQUEST] = g_signal_new("got-request", G_TYPE_FROM_CLASS(klass),
+					 G_SIGNAL_RUN_LAST, 0, NULL, NULL,
+					 g_cclosure_marshal_VOID__VOID,
+					 G_TYPE_NONE, 0);
 	purple_media_signals[GOT_HANGUP] = g_signal_new("got-hangup", G_TYPE_FROM_CLASS(klass),
 					 G_SIGNAL_RUN_LAST, 0, NULL, NULL,
 					 g_cclosure_marshal_VOID__VOID,
@@ -321,6 +326,21 @@
 	return result;
 }
 
+PurpleMediaStreamType
+purple_media_get_overall_type(PurpleMedia *media)
+{
+	GList *values = g_hash_table_get_values(media->priv->sessions);
+	PurpleMediaStreamType type = PURPLE_MEDIA_NONE;
+
+	for (; values; values = values->next) {
+		PurpleMediaSession *session = values->data;
+		type |= session->type;
+	}
+
+	g_list_free(values);
+	return type;
+}
+
 static PurpleMediaSession*
 purple_media_get_session(PurpleMedia *media, const gchar *sess_id)
 {
@@ -528,6 +548,12 @@
 }
 
 void
+purple_media_got_request(PurpleMedia *media)
+{
+	g_signal_emit(media, purple_media_signals[GOT_REQUEST], 0);
+}
+
+void
 purple_media_got_hangup(PurpleMedia *media)
 {
 	g_signal_emit(media, purple_media_signals[GOT_HANGUP], 0);