-static int AllocatorInit( const filter_chain_allocator_t *, filter_t * );
-static void AllocatorClean( const filter_chain_allocator_t *, filter_t * );
+typedef struct chained_filter_t
+{
+ /* Public part of the filter structure */
+ filter_t filter;
+ /* Private filter chain data (shhhh!) */
+ struct chained_filter_t *prev, *next;
+ vlc_mouse_t *mouse;
+} chained_filter_t;
+
+/* Only use this with filter objects from _this_ C module */
+static inline chained_filter_t *chained (filter_t *filter)
+{
+ return (chained_filter_t *)filter;
+}
+
+static int AllocatorInit( const filter_chain_allocator_t *,
+ chained_filter_t * );
+static void AllocatorClean( const filter_chain_allocator_t *,
+ chained_filter_t * );