From 560d02dd590f08d3b98795e8dd0938f1aaf6690b Mon Sep 17 00:00:00 2001 From: Jakub Adam Date: Mon, 7 Jan 2013 21:46:44 +0100 Subject: [PATCH] purple: call sipe_media_call->stream_initialized_cb() only once per stream Previous commit made duplicate invocations possible. --- src/purple/purple-media.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/purple/purple-media.c b/src/purple/purple-media.c index cff5d5cb..b9e45069 100644 --- a/src/purple/purple-media.c +++ b/src/purple/purple-media.c @@ -75,6 +75,7 @@ struct sipe_backend_stream { gboolean local_on_hold; gboolean remote_on_hold; gboolean accepted; + gboolean initialized_cb_was_fired; }; static void @@ -100,8 +101,10 @@ maybe_signal_stream_initialized(struct sipe_media_call *call, gchar *sessionid) struct sipe_backend_stream *stream; stream = sipe_backend_media_get_stream_by_id(call->backend_private, sessionid); - if (sipe_backend_stream_initialized(call->backend_private, stream)) { + if (sipe_backend_stream_initialized(call->backend_private, stream) && + !stream->initialized_cb_was_fired) { call->stream_initialized_cb(call, stream); + stream->initialized_cb_was_fired = TRUE; } } } @@ -464,6 +467,7 @@ sipe_backend_media_add_stream(struct sipe_backend_media *media, stream = g_new0(struct sipe_backend_stream, 1); stream->sessionid = g_strdup(id); stream->participant = g_strdup(participant); + stream->initialized_cb_was_fired = FALSE; media->streams = g_slist_append(media->streams, stream); if (!initiator) -- 2.11.4.GIT