# HG changeset patch # User maiku@pidgin.im # Date 1256668486 0 # Node ID f65689100cfec05cb5d415e84eb51f3133bb58b1 # Parent dfc724880907428d5fff52a58c485e6ac51266ca Move odd direction changing functionality to the Fs2 media backend. diff -r dfc724880907 -r f65689100cfe libpurple/media/backend-fs2.c --- a/libpurple/media/backend-fs2.c Tue Oct 27 18:15:23 2009 +0000 +++ b/libpurple/media/backend-fs2.c Tue Oct 27 18:34:46 2009 +0000 @@ -1416,6 +1416,7 @@ PurpleMediaBackendFs2 *backend = PURPLE_MEDIA_BACKEND_FS2(self); PurpleMediaBackendFs2Private *priv = PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(backend); + PurpleMediaBackendFs2Stream *stream; if (priv->conference == NULL && !_init_conference(backend)) { purple_debug_error("backend-fs2", @@ -1438,8 +1439,19 @@ return FALSE; } - if (_get_stream(backend, sess_id, who) == NULL && - !_create_stream(backend, sess_id, who, type, + stream = _get_stream(backend, sess_id, who); + + if (stream != NULL) { + FsStreamDirection type_direction = + _session_type_to_fs_stream_direction(type); + + if (_session_type_to_fs_stream_direction( + stream->session->type) != type_direction) { + /* change direction */ + g_object_set(stream->stream, "direction", + type_direction, NULL); + } + } else if (!_create_stream(backend, sess_id, who, type, initiator, transmitter, num_params, params)) { purple_debug_error("backend-fs2", "Error creating the stream.\n"); diff -r dfc724880907 -r f65689100cfe libpurple/media/media.c --- a/libpurple/media/media.c Tue Oct 27 18:15:23 2009 +0000 +++ b/libpurple/media/media.c Tue Oct 27 18:34:46 2009 +0000 @@ -1230,9 +1230,7 @@ participant = purple_media_backend_fs2_get_participant( PURPLE_MEDIA_BACKEND_FS2(media->priv->backend), who); - stream = purple_media_get_stream(media, sess_id, who); - - if (!stream) { + if (purple_media_get_stream(media, sess_id, who) == NULL) { FsStream *fsstream = NULL; fsstream = purple_media_backend_fs2_get_stream( @@ -1249,13 +1247,6 @@ g_signal_emit(media, purple_media_signals[STATE_CHANGED], 0, PURPLE_MEDIA_STATE_NEW, session->id, who); - } 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;