]> git.sesse.net Git - vlc/commitdiff
filter_chain: add filter_chain_ForEach() helper
authorRémi Denis-Courmont <remi@remlab.net>
Mon, 28 Jul 2014 19:52:12 +0000 (22:52 +0300)
committerRémi Denis-Courmont <remi@remlab.net>
Mon, 28 Jul 2014 20:16:30 +0000 (23:16 +0300)
include/vlc_filter.h
src/misc/filter_chain.c

index 96ffb61909e9a47de4663112200aeae4ecb651a7..ff13032ceb0000b1d19e460933c8fb77bea99c8a 100644 (file)
@@ -428,5 +428,8 @@ VLC_API int filter_chain_MouseFilter( filter_chain_t *, vlc_mouse_t *, const vlc
  */
 VLC_API int filter_chain_MouseEvent( filter_chain_t *, const vlc_mouse_t *, const video_format_t * );
 
+int filter_chain_ForEach( filter_chain_t *chain,
+                          int (*cb)( filter_t *, void * ), void *opaque );
+
 #endif /* _VLC_FILTER_H */
 
index 4143fdc7a80f35f9f4c48d58d5e56a9c186597ea..79a00fa82e2366dac02b54e26414288ca0c866b0 100644 (file)
@@ -236,6 +236,18 @@ int filter_chain_DeleteFilter( filter_chain_t *p_chain, filter_t *p_filter )
     return UpdateBufferFunctions( p_chain );
 }
 
+int filter_chain_ForEach( filter_chain_t *chain,
+                          int (*cb)( filter_t *, void * ), void *opaque )
+{
+    for( chained_filter_t *f = chain->first; f != NULL; f = f->next )
+    {
+        int ret = cb( &f->filter, opaque );
+        if( ret )
+            return ret;
+    }
+    return VLC_SUCCESS;
+}
+
 int filter_chain_GetLength( filter_chain_t *p_chain )
 {
     return p_chain->length;