]> git.sesse.net Git - vlc/commitdiff
Do not propagate fullscreen status up the filter chain
authorRémi Denis-Courmont <remi@remlab.net>
Wed, 10 Feb 2010 17:46:59 +0000 (19:46 +0200)
committerRémi Denis-Courmont <remi@remlab.net>
Wed, 10 Feb 2010 17:46:59 +0000 (19:46 +0200)
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.

modules/video_filter/filter_common.h
modules/video_filter/wrapper.c

index 326ebadfd5053e2ecf1dee0715d97b558963ecc5..04097c543ac704f70adcade92d002433db763419 100644 (file)
@@ -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 )
 
index 26c078a92d81fe47ad0865a8aba15941d33f5a71..dbb837db16cdab7f38917bd49786c8f154d56b1b 100644 (file)
@@ -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 )
 {