summaryrefslogtreecommitdiff
path: root/gst/fsrawconference
diff options
context:
space:
mode:
authorOlivier CrĂȘte <olivier.crete@collabora.co.uk>2011-02-09 11:25:04 +0000
committerOlivier CrĂȘte <olivier.crete@collabora.com>2011-10-11 15:39:40 -0400
commitba8b7d2818e7a78de47d40cc3aa4594458bb0193 (patch)
treeb807f5d09bfdcd2e76142cfc3850a2a532447ff6 /gst/fsrawconference
parent49f40c71c2073c94c8f824e3bd1d7594211dc2e9 (diff)
downloadfarstream-ba8b7d2818e7a78de47d40cc3aa4594458bb0193.tar.gz
session: Remove transmitter creation from fs_session_new_stream()
Diffstat (limited to 'gst/fsrawconference')
-rw-r--r--gst/fsrawconference/fs-raw-session.c51
-rw-r--r--gst/fsrawconference/fs-raw-stream.c84
-rw-r--r--gst/fsrawconference/fs-raw-stream.h4
3 files changed, 15 insertions, 124 deletions
diff --git a/gst/fsrawconference/fs-raw-session.c b/gst/fsrawconference/fs-raw-session.c
index 7bc0fb1c..9509b32d 100644
--- a/gst/fsrawconference/fs-raw-session.c
+++ b/gst/fsrawconference/fs-raw-session.c
@@ -163,9 +163,6 @@ static void fs_raw_session_constructed (GObject *object);
static FsStream *fs_raw_session_new_stream (FsSession *session,
FsParticipant *participant,
FsStreamDirection direction,
- const gchar *transmitter,
- guint n_parameters,
- GParameter *parameters,
GError **error);
static gchar **fs_raw_session_list_transmitters (FsSession *session);
@@ -1148,15 +1145,11 @@ static FsStream *
fs_raw_session_new_stream (FsSession *session,
FsParticipant *participant,
FsStreamDirection direction,
- const gchar *transmitter,
- guint n_parameters,
- GParameter *parameters,
GError **error)
{
FsRawSession *self = FS_RAW_SESSION (session);
FsStream *new_stream = NULL;
FsRawConference *conference;
- FsStreamTransmitter *stream_transmitter = NULL;
if (!FS_IS_RAW_PARTICIPANT (participant))
{
@@ -1174,33 +1167,23 @@ fs_raw_session_new_stream (FsSession *session,
goto already_have_stream;
GST_OBJECT_UNLOCK (conference);
- if (transmitter)
- {
- stream_transmitter = _stream_get_stream_transmitter (NULL,
- transmitter, participant, parameters, n_parameters, error, self);
- if (!stream_transmitter)
- goto error;
- }
-
new_stream = FS_STREAM_CAST (fs_raw_stream_new (self,
FS_RAW_PARTICIPANT (participant),
- direction, conference, stream_transmitter,
- _stream_get_stream_transmitter, self, error));
+ direction, conference,
+ _stream_get_stream_transmitter, self));
- if (new_stream)
- {
- g_signal_connect_object (new_stream, "notify::remote-codecs",
- G_CALLBACK (_stream_remote_codecs_changed), self, 0);
+ GST_OBJECT_LOCK (conference);
+ if (self->priv->stream)
+ goto already_have_stream;
- GST_OBJECT_LOCK (conference);
- if (self->priv->stream)
- {
- goto already_have_stream;
- }
- self->priv->stream = (FsRawStream *) new_stream;
- GST_OBJECT_UNLOCK (conference);
- }
+ self->priv->stream = (FsRawStream *) new_stream;
+
+ GST_OBJECT_UNLOCK (conference);
+
+ g_signal_connect_object (new_stream, "notify::remote-codecs",
+ G_CALLBACK (_stream_remote_codecs_changed), self, 0);
+
done:
gst_object_unref (conference);
@@ -1210,16 +1193,6 @@ already_have_stream:
GST_OBJECT_UNLOCK (conference);
g_set_error (error, FS_ERROR, FS_ERROR_ALREADY_EXISTS,
"There already is a stream in this session");
- goto error;
-
-error:
- fs_raw_session_remove_stream (self, NULL);
-
- if (stream_transmitter)
- {
- fs_stream_transmitter_stop (stream_transmitter);
- g_object_unref (stream_transmitter);
- }
goto done;
}
diff --git a/gst/fsrawconference/fs-raw-stream.c b/gst/fsrawconference/fs-raw-stream.c
index ed8e5ea1..c41b5114 100644
--- a/gst/fsrawconference/fs-raw-stream.c
+++ b/gst/fsrawconference/fs-raw-stream.c
@@ -90,8 +90,6 @@ struct _FsRawStreamPrivate
GList *remote_codecs;
- GError *construction_error;
-
gulong local_candidates_prepared_handler_id;
gulong new_active_candidate_pair_handler_id;
gulong new_local_candidate_handler_id;
@@ -153,8 +151,6 @@ static void fs_raw_stream_set_property (GObject *object,
const GValue *value,
GParamSpec *pspec);
-static void fs_raw_stream_constructed (GObject *object);
-
static void _local_candidates_prepared (
FsStreamTransmitter *stream_transmitter,
gpointer user_data);
@@ -202,7 +198,6 @@ fs_raw_stream_class_init (FsRawStreamClass *klass)
gobject_class->set_property = fs_raw_stream_set_property;
gobject_class->get_property = fs_raw_stream_get_property;
- gobject_class->constructed = fs_raw_stream_constructed;
gobject_class->dispose = fs_raw_stream_dispose;
gobject_class->finalize = fs_raw_stream_finalize;
@@ -503,64 +498,6 @@ fs_raw_stream_set_property (GObject *object,
}
}
-static void
-fs_raw_stream_constructed (GObject *object)
-{
- FsRawStream *self = FS_RAW_STREAM_CAST (object);
-
- if (!self->priv->conference) {
- self->priv->construction_error = g_error_new (FS_ERROR,
- FS_ERROR_INVALID_ARGUMENTS, "A Stream needs a conference object");
- return;
- }
-
- if (self->priv->stream_transmitter)
- {
- g_object_set (self->priv->stream_transmitter, "sending",
- (self->priv->direction & FS_DIRECTION_SEND) ? TRUE : FALSE, NULL);
-
- self->priv->local_candidates_prepared_handler_id =
- g_signal_connect_object (self->priv->stream_transmitter,
- "local-candidates-prepared",
- G_CALLBACK (_local_candidates_prepared),
- self, 0);
- self->priv->new_active_candidate_pair_handler_id =
- g_signal_connect_object (self->priv->stream_transmitter,
- "new-active-candidate-pair",
- G_CALLBACK (_new_active_candidate_pair),
- self, 0);
- self->priv->new_local_candidate_handler_id =
- g_signal_connect_object (self->priv->stream_transmitter,
- "new-local-candidate",
- G_CALLBACK (_new_local_candidate),
- self, 0);
- self->priv->error_handler_id =
- g_signal_connect_object (self->priv->stream_transmitter,
- "error",
- G_CALLBACK (_transmitter_error),
- self, 0);
- self->priv->state_changed_handler_id =
- g_signal_connect_object (self->priv->stream_transmitter,
- "state-changed",
- G_CALLBACK (_state_changed),
- self, 0);
-
- if (!fs_stream_transmitter_gather_local_candidates (
- self->priv->stream_transmitter,
- &self->priv->construction_error))
- {
- if (!self->priv->construction_error)
- self->priv->construction_error = g_error_new (FS_ERROR,
- FS_ERROR_INTERNAL,
- "Unknown error while gathering local candidates");
- return;
- }
- }
-
- if (G_OBJECT_CLASS (fs_raw_stream_parent_class)->constructed)
- G_OBJECT_CLASS (fs_raw_stream_parent_class)->constructed (object);
-}
-
static void
_local_candidates_prepared (FsStreamTransmitter *stream_transmitter,
@@ -855,10 +792,8 @@ fs_raw_stream_new (FsRawSession *session,
FsRawParticipant *participant,
FsStreamDirection direction,
FsRawConference *conference,
- FsStreamTransmitter *stream_transmitter,
stream_get_new_stream_transmitter_cb get_new_stream_transmitter_cb,
- gpointer user_data,
- GError **error)
+ gpointer user_data)
{
FsRawStream *self;
@@ -870,22 +805,8 @@ fs_raw_stream_new (FsRawSession *session,
"participant", participant,
"direction", direction,
"conference", conference,
- "stream-transmitter", stream_transmitter,
NULL);
- if (!self)
- {
- *error = g_error_new (FS_ERROR, FS_ERROR_CONSTRUCTION,
- "Could not create object");
- return NULL;
- }
- else if (self->priv->construction_error)
- {
- g_propagate_error (error, self->priv->construction_error);
- g_object_unref (self);
- return NULL;
- }
-
self->priv->get_new_stream_transmitter_cb = get_new_stream_transmitter_cb;
self->priv->user_data = user_data;
@@ -964,8 +885,7 @@ fs_raw_stream_set_transmitter (FsStream *stream,
if (!fs_stream_transmitter_gather_local_candidates (
self->priv->stream_transmitter, error))
{
- if (!self->priv->construction_error)
- GST_OBJECT_LOCK (conf);
+ GST_OBJECT_LOCK (conf);
self->priv->stream_transmitter = NULL;
GST_OBJECT_UNLOCK (conf);
diff --git a/gst/fsrawconference/fs-raw-stream.h b/gst/fsrawconference/fs-raw-stream.h
index c94ff8d3..4afa54db 100644
--- a/gst/fsrawconference/fs-raw-stream.h
+++ b/gst/fsrawconference/fs-raw-stream.h
@@ -84,10 +84,8 @@ FsRawStream *fs_raw_stream_new (FsRawSession *session,
FsRawParticipant *participant,
FsStreamDirection direction,
FsRawConference *conference,
- FsStreamTransmitter *stream_transmitter,
stream_get_new_stream_transmitter_cb get_new_stream_transmitter_cb,
- gpointer user_data,
- GError **error);
+ gpointer user_data);
G_END_DECLS