From: RĂ©mi Denis-Courmont Date: Wed, 10 Feb 2010 17:46:59 +0000 (+0200) Subject: Do not propagate fullscreen status up the filter chain X-Git-Tag: 1.1.0-ff~205 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=7b2d398a05571bb78fa7ad513608e8d2743d6268;p=vlc 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. --- diff --git a/modules/video_filter/filter_common.h b/modules/video_filter/filter_common.h index 326ebadfd5..04097c543a 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 26c078a92d..dbb837db16 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 ) {