aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy/action-chain.c
diff options
context:
space:
mode:
authorEmilio Pozuelo Monfort <emilio.pozuelo@collabora.co.uk>2011-04-20 16:23:05 +0800
committerEmilio Pozuelo Monfort <emilio.pozuelo@collabora.co.uk>2011-04-20 23:14:27 +0800
commitce0549d6ed8589d8dd69175e8769db6640237d35 (patch)
treed4da0c2b6b431b31c4a3de0d3888192825f27353 /libempathy/action-chain.c
parent826f4a8d234946fb758bc5e03dc347ff8dd1c9ce (diff)
downloadgsoc2013-empathy-ce0549d6ed8589d8dd69175e8769db6640237d35.tar
gsoc2013-empathy-ce0549d6ed8589d8dd69175e8769db6640237d35.tar.gz
gsoc2013-empathy-ce0549d6ed8589d8dd69175e8769db6640237d35.tar.bz2
gsoc2013-empathy-ce0549d6ed8589d8dd69175e8769db6640237d35.tar.lz
gsoc2013-empathy-ce0549d6ed8589d8dd69175e8769db6640237d35.tar.xz
gsoc2013-empathy-ce0549d6ed8589d8dd69175e8769db6640237d35.tar.zst
gsoc2013-empathy-ce0549d6ed8589d8dd69175e8769db6640237d35.zip
TplActionChain: add _tpl_action_chain_start()
Diffstat (limited to 'libempathy/action-chain.c')
-rw-r--r--libempathy/action-chain.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/libempathy/action-chain.c b/libempathy/action-chain.c
index df792e548..30217ddc5 100644
--- a/libempathy/action-chain.c
+++ b/libempathy/action-chain.c
@@ -104,18 +104,34 @@ _tpl_action_chain_append (TplActionChain *self,
g_queue_push_tail (self->chain, l);
}
+void
+_tpl_action_chain_start (TplActionChain *self)
+{
+ g_return_if_fail (!g_queue_is_empty (self->chain));
+
+ if (self->running)
+ return;
+
+ _tpl_action_chain_continue (self);
+}
void
_tpl_action_chain_continue (TplActionChain *self)
{
if (g_queue_is_empty (self->chain))
- g_simple_async_result_complete (self->simple);
+ {
+ self->running = FALSE;
+ g_simple_async_result_complete (self->simple);
+ }
else
{
TplActionLink *l = g_queue_pop_head (self->chain);
+ self->running = TRUE;
l->action (self, l->user_data);
link_free (l);
+ if (g_queue_is_empty (self->chain))
+ self->running = FALSE;
}
}