[vlc-devel] [PATCH] filter_chain: do not allocate the local vlc_mouse_t separately

Steve Lhomme robux4 at ycbcr.xyz
Thu Nov 12 14:41:59 CET 2020


---
 src/misc/filter_chain.c | 15 +++++----------
 1 file changed, 5 insertions(+), 10 deletions(-)

diff --git a/src/misc/filter_chain.c b/src/misc/filter_chain.c
index 4eafffd4d87..7f78f95334b 100644
--- a/src/misc/filter_chain.c
+++ b/src/misc/filter_chain.c
@@ -38,7 +38,7 @@ typedef struct chained_filter_t
     filter_t filter;
     /* Private filter chain data (shhhh!) */
     struct chained_filter_t *prev, *next;
-    vlc_mouse_t *mouse;
+    vlc_mouse_t mouse;
     vlc_picture_chain_t pending;
 } chained_filter_t;
 
@@ -273,10 +273,7 @@ static filter_t *filter_chain_AppendInner( filter_chain_t *chain,
     chain->last = chained;
     chained->next = NULL;
 
-    vlc_mouse_t *mouse = malloc( sizeof(*mouse) );
-    if( likely(mouse != NULL) )
-        vlc_mouse_Init( mouse );
-    chained->mouse = mouse;
+    vlc_mouse_Init( &chained->mouse );
     vlc_picture_chain_Init( &chained->pending );
 
     msg_Dbg( chain->obj, "Filter '%s' (%p) appended to chain",
@@ -337,7 +334,6 @@ void filter_chain_DeleteFilter( filter_chain_t *chain, filter_t *filter )
     msg_Dbg( chain->obj, "Filter %p removed from chain", (void *)filter );
     FilterDeletePictures( &chained->pending );
 
-    free( chained->mouse );
     es_format_Clean( &filter->fmt_out );
     es_format_Clean( &filter->fmt_in );
 
@@ -510,14 +506,13 @@ int filter_chain_MouseFilter( filter_chain_t *p_chain, vlc_mouse_t *p_dst, const
     for( chained_filter_t *f = p_chain->last; f != NULL; f = f->prev )
     {
         filter_t *p_filter = &f->filter;
-        vlc_mouse_t *p_mouse = f->mouse;
 
-        if( p_filter->ops->video_mouse && p_mouse )
+        if( p_filter->ops->video_mouse )
         {
-            vlc_mouse_t old = *p_mouse;
+            vlc_mouse_t old = f->mouse;
             vlc_mouse_t filtered = current;
 
-            *p_mouse = current;
+            f->mouse = current;
             if( p_filter->ops->video_mouse( p_filter, &filtered, &old) )
                 return VLC_EGENERIC;
             current = filtered;
-- 
2.26.2



More information about the vlc-devel mailing list