[vlc-devel] commit: Do not propagate fullscreen status up the filter chain ( Rémi Denis-Courmont )

git version control git at videolan.org
Wed Feb 10 18:56:30 CET 2010


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Wed Feb 10 19:46:59 2010 +0200| [7b2d398a05571bb78fa7ad513608e8d2743d6268] | committer: Rémi Denis-Courmont 

Do not propagate fullscreen status up the filter chain

This is fundamentally a lock inversion between the parent and child
object variables locks. Interfaces (hotkeys and others) use downward
propagation, so we keep that direction and remove the other direction.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=7b2d398a05571bb78fa7ad513608e8d2743d6268
---

 modules/video_filter/filter_common.h |   11 ++++-------
 modules/video_filter/wrapper.c       |   17 +++--------------
 2 files changed, 7 insertions(+), 21 deletions(-)

diff --git a/modules/video_filter/filter_common.h b/modules/video_filter/filter_common.h
index 326ebad..04097c5 100644
--- a/modules/video_filter/filter_common.h
+++ b/modules/video_filter/filter_common.h
@@ -86,9 +86,9 @@ static inline int ForwardEvent( vlc_object_t *p_this, char const *psz_var,
  * Install/remove all callbacks needed for proper event handling inside
  * a vout-filter.
  */
-static inline void vout_filter_SetupChild( vout_thread_t *p_parent, vout_thread_t *p_child,
+static inline void vout_filter_SetupChild( vout_thread_t *p_parent,
+                                           vout_thread_t *p_child,
                                            vlc_callback_t pf_mouse_event,
-                                           vlc_callback_t pf_fullscreen_up,
                                            vlc_callback_t pf_fullscreen_down,
                                            bool b_init )
 {
@@ -115,14 +115,11 @@ static inline void vout_filter_SetupChild( vout_thread_t *p_parent, vout_thread_
     pf_execute( VLC_OBJECT(p_parent), "crop",         ForwardEvent, p_child );
 
     /* */
-    if( !pf_fullscreen_up )
-        pf_fullscreen_up = ForwardEvent;
     if( !pf_fullscreen_down )
         pf_fullscreen_down = ForwardEvent;
-    pf_execute( VLC_OBJECT(p_child),  "fullscreen", pf_fullscreen_up,   p_parent );
     pf_execute( VLC_OBJECT(p_parent), "fullscreen", pf_fullscreen_down, p_child );
 }
 
-#define vout_filter_AddChild( a, b, c ) vout_filter_SetupChild( a, b, c, NULL, NULL, true )
-#define vout_filter_DelChild( a, b, c ) vout_filter_SetupChild( a, b, c, NULL, NULL, false )
+#define vout_filter_AddChild( a, b, c ) vout_filter_SetupChild( a, b, c, NULL, true )
+#define vout_filter_DelChild( a, b, c ) vout_filter_SetupChild( a, b, c, NULL, false )
 
diff --git a/modules/video_filter/wrapper.c b/modules/video_filter/wrapper.c
index 26c078a..dbb837d 100644
--- a/modules/video_filter/wrapper.c
+++ b/modules/video_filter/wrapper.c
@@ -117,8 +117,6 @@ static int  FilterAllocationInit ( filter_t *, void * );
 static void FilterAllocationClean( filter_t * );
 
 /* */
-static int  FullscreenEventUp( vlc_object_t *, char const *,
-                               vlc_value_t, vlc_value_t, void * );
 static int  FullscreenEventDown( vlc_object_t *, char const *,
                                  vlc_value_t, vlc_value_t, void * );
 static int  SplitterPictureNew( video_splitter_t *, picture_t *pp_picture[] );
@@ -310,11 +308,11 @@ static int Init( vout_thread_t *p_vout )
             }
         }
 
-        /* Attach once pp_vout is completly field to avoid race conditions */
+        /* Attach once pp_vout is completly filed to avoid race conditions */
         for( int i = 0; i < p_splitter->i_output; i++ )
             vout_filter_SetupChild( p_vout, p_sys->pp_vout[i],
                                     MouseEvent,
-                                    FullscreenEventUp, FullscreenEventDown, true );
+                                    FullscreenEventDown, true );
         /* Restore settings */
         var_SetInteger( p_vout, "align", i_org_align );
         var_SetInteger( p_vout, "video-x", i_org_x );
@@ -398,7 +396,7 @@ static void VoutsClean( vout_thread_t *p_vout, int i_count )
         else
              vout_filter_SetupChild( p_vout, p_sys->pp_vout[i],
                                      MouseEvent,
-                                     FullscreenEventUp, FullscreenEventDown, false );
+                                     FullscreenEventDown, false );
     }
 
     for( int i = 0; i < i_count; i++ )
@@ -555,15 +553,6 @@ static bool IsFullscreenActive( vout_thread_t *p_vout )
     }
     return false;
 }
-static int FullscreenEventUp( vlc_object_t *p_this, char const *psz_var,
-                              vlc_value_t oldval, vlc_value_t newval, void *p_data )
-{
-    vout_thread_t *p_vout = p_data;
-    VLC_UNUSED(oldval); VLC_UNUSED(p_this); VLC_UNUSED(psz_var); VLC_UNUSED(newval);
-
-    const bool b_fullscreen = IsFullscreenActive( p_vout );
-    return var_SetBool( p_vout, "fullscreen", b_fullscreen );
-}
 static int FullscreenEventDown( vlc_object_t *p_this, char const *psz_var,
                                 vlc_value_t oldval, vlc_value_t newval, void *p_data )
 {




More information about the vlc-devel mailing list