From 08dbe37f6f7d753137c695458eed6c11d5a97179 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 5 May 2011 10:40:14 +0200 Subject: [PATCH] context: add foreach function Add a function to iterate over all stored events. --- gst/gstcontext.c | 19 +++++++++++++++++++ gst/gstcontext.h | 4 ++++ 2 files changed, 23 insertions(+) diff --git a/gst/gstcontext.c b/gst/gstcontext.c index 7f610b6..d6ca462 100644 --- a/gst/gstcontext.c +++ b/gst/gstcontext.c @@ -181,3 +181,22 @@ gst_context_clear (GstContext * context) for (i = 0; i < GST_EVENT_MAX_STICKY; i++) gst_event_replace (&context->events[i], NULL); } + +/** + * gst_context_foreach: + * @context: a #GstContext + * @func: a #GFunc + * @user_data: user data + * + * Call @func with the non NULL event and @user_data. + */ +void +gst_context_foreach (GstContext * context, GFunc func, gpointer user_data) +{ + guint i; + GstEvent *event; + + for (i = 0; i < GST_EVENT_MAX_STICKY; i++) + if ((event = context->events[i])) + func (event, user_data); +} diff --git a/gst/gstcontext.h b/gst/gstcontext.h index b292b5d..34e0d49 100644 --- a/gst/gstcontext.h +++ b/gst/gstcontext.h @@ -134,11 +134,15 @@ gst_context_copy (const GstContext * context) GstContext * gst_context_new (void); +/* updating and setting events */ void gst_context_update (GstContext *context, GstEvent *event); GstEvent * gst_context_get (GstContext *context, GstEventType type); void gst_context_clear (GstContext *context); +/* foreach */ +void gst_context_foreach (GstContext *context, GFunc func, gpointer user_data); + G_END_DECLS #endif /* __GST_CONTEXT_H__ */ -- 2.7.4