changeset 26385:8bc4b9094913

Get rid of the purple_media_add_stream wrapper as it isn't useful. If you'd start a voice and video session they can't have the same session id.
author Mike Ruprecht <maiku@soc.pidgin.im>
date Tue, 31 Mar 2009 02:23:05 +0000
parents bea334b214fa
children 6d9f4ca72828
files libpurple/media.c
diffstat 1 files changed, 24 insertions(+), 48 deletions(-) [+]
line wrap: on
line diff
--- a/libpurple/media.c	Tue Mar 31 01:38:50 2009 +0000
+++ b/libpurple/media.c	Tue Mar 31 02:23:05 2009 +0000
@@ -1656,19 +1656,21 @@
 	stream->connected_cb_id = purple_timeout_add(0,
 			(GSourceFunc)purple_media_connected_cb, stream);
 }
+#endif  /* USE_VV */
 
-static gboolean
-purple_media_add_stream_internal(PurpleMedia *media, const gchar *sess_id,
-				 const gchar *who, FsMediaType type,
-				 FsStreamDirection type_direction,
-				 gboolean initiator, const gchar *transmitter,
-				 guint num_params, GParameter *params)
+gboolean
+purple_media_add_stream(PurpleMedia *media, const gchar *sess_id,
+		const gchar *who, PurpleMediaSessionType type,
+		gboolean initiator, const gchar *transmitter,
+		guint num_params, GParameter *params)
 {
+#ifdef USE_VV
 	PurpleMediaSession *session;
 	FsParticipant *participant = NULL;
 	PurpleMediaStream *stream = NULL;
-	FsStreamDirection *direction = NULL;
-	PurpleMediaSessionType session_type;
+	FsMediaType media_type = purple_media_to_fs_media_type(type);
+	FsStreamDirection type_direction =
+			purple_media_to_fs_stream_direction(type);
 	gboolean is_nice = !strcmp(transmitter, "nice");
 
 	g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE);
@@ -1679,10 +1681,12 @@
 		GError *err = NULL;
 		GList *codec_conf = NULL;
 		gchar *filename = NULL;
+		PurpleMediaSessionType session_type;
 
 		session = g_new0(PurpleMediaSession, 1);
 
-		session->session = fs_conference_new_session(media->priv->conference, type, &err);
+		session->session = fs_conference_new_session(
+				media->priv->conference, media_type, &err);
 
 		if (err != NULL) {
 			purple_media_error(media, "Error creating session: %s\n", err->message);
@@ -1731,7 +1735,7 @@
 
 		session->id = g_strdup(sess_id);
 		session->media = media;
-		session->type = purple_media_from_fs(type, type_direction);
+		session->type = type;
 		session->initiator = initiator;
 
 		purple_media_add_session(media, session);
@@ -1739,7 +1743,8 @@
 				0, PURPLE_MEDIA_STATE_NEW,
 				session->id, NULL);
 
-		session_type = purple_media_from_fs(type, FS_DIRECTION_SEND);
+		session_type = purple_media_from_fs(media_type,
+				FS_DIRECTION_SEND);
 		purple_media_set_src(media, session->id,
 				purple_media_manager_get_element(
 				media->priv->manager, session_type));
@@ -1861,48 +1866,19 @@
 		g_signal_emit(media, purple_media_signals[STATE_CHANGED],
 				0, PURPLE_MEDIA_STATE_NEW,
 				session->id, who);
-	} else if (*direction != type_direction) {	
-		/* change direction */
-		g_object_set(stream->stream, "direction", type_direction, NULL);
+	} else {
+		if (purple_media_to_fs_stream_direction(stream->session->type)
+				!= type_direction) {
+			/* change direction */
+			g_object_set(stream->stream, "direction",
+					type_direction, NULL);
+		}
 	}
 
 	return TRUE;
-}
-#endif
-
-gboolean
-purple_media_add_stream(PurpleMedia *media, const gchar *sess_id, const gchar *who,
-			PurpleMediaSessionType type, gboolean initiator,
-			const gchar *transmitter,
-			guint num_params, GParameter *params)
-{
-#ifdef USE_VV
-	FsStreamDirection type_direction;
-
-	g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE);
-
-	if (type & PURPLE_MEDIA_AUDIO) {
-		type_direction = purple_media_to_fs_stream_direction(type & PURPLE_MEDIA_AUDIO);
-
-		if (!purple_media_add_stream_internal(media, sess_id, who,
-						      FS_MEDIA_TYPE_AUDIO, type_direction, initiator,
-						      transmitter, num_params, params)) {
-			return FALSE;
-		}
-	}
-	else if (type & PURPLE_MEDIA_VIDEO) {
-		type_direction = purple_media_to_fs_stream_direction(type & PURPLE_MEDIA_VIDEO);
-
-		if (!purple_media_add_stream_internal(media, sess_id, who,
-						      FS_MEDIA_TYPE_VIDEO, type_direction, initiator,
-						      transmitter, num_params, params)) {
-			return FALSE;
-		}
-	}
-	return TRUE;
 #else
 	return FALSE;
-#endif
+#endif  /* USE_VV */
 }
 
 PurpleMediaSessionType