[telepathy-gabble/master] Let MediaChannelRequest store a list of tokens
Sjoerd Simons
sjoerd.simons at collabora.co.uk
Tue Dec 29 05:34:37 PST 2009
---
src/media-factory.c | 23 ++++++++++++-----------
1 files changed, 12 insertions(+), 11 deletions(-)
diff --git a/src/media-factory.c b/src/media-factory.c
index 6e5f963..030a042 100644
--- a/src/media-factory.c
+++ b/src/media-factory.c
@@ -510,21 +510,21 @@ typedef enum
typedef struct
{
GabbleMediaFactory *self;
- GabbleMediaChannel *channel;
- gpointer request_token;
+ TpExportableChannel *channel;
+ GSList *request_tokens;
} MediaChannelRequest;
static MediaChannelRequest *
media_channel_request_new (GabbleMediaFactory *self,
- GabbleMediaChannel *channel,
+ TpExportableChannel *channel,
gpointer request_token)
{
MediaChannelRequest *mcr = g_slice_new0 (MediaChannelRequest);
mcr->self = self;
mcr->channel = channel;
- mcr->request_token = request_token;
+ mcr->request_tokens = g_slist_prepend (mcr->request_tokens, request_token);
return mcr;
}
@@ -532,6 +532,7 @@ media_channel_request_new (GabbleMediaFactory *self,
static void
media_channel_request_free (MediaChannelRequest *mcr)
{
+ g_slist_free (mcr->request_tokens);
g_slice_free (MediaChannelRequest, mcr);
}
@@ -539,12 +540,8 @@ static void
media_channel_request_succeeded_cb (MediaChannelRequest *mcr,
GPtrArray *streams)
{
- GSList *request_tokens;
-
- request_tokens = g_slist_prepend (NULL, mcr->request_token);
tp_channel_manager_emit_new_channel (mcr->self,
- TP_EXPORTABLE_CHANNEL (mcr->channel), request_tokens);
- g_slist_free (request_tokens);
+ mcr->channel, mcr->request_tokens);
media_channel_request_free (mcr);
}
@@ -553,7 +550,10 @@ static void
media_channel_request_failed_cb (MediaChannelRequest *mcr,
GError *error)
{
- tp_channel_manager_emit_request_failed (mcr->self, mcr->request_token,
+ GSList *l;
+
+ for (l = mcr->request_tokens; l != NULL; l = g_slist_next (l))
+ tp_channel_manager_emit_request_failed (mcr->self, l->data,
error->domain, error->code, error->message);
media_channel_request_free (mcr);
@@ -689,7 +689,8 @@ gabble_media_factory_requestotron (TpChannelManager *manager,
gabble_media_channel_request_initial_streams (channel,
(GFunc) media_channel_request_succeeded_cb,
(GFunc) media_channel_request_failed_cb,
- media_channel_request_new (self, channel, request_token));
+ media_channel_request_new (self,
+ TP_EXPORTABLE_CHANNEL (channel), request_token));
return TRUE;
--
1.5.6.5
More information about the telepathy-commits
mailing list