From 2c595f3810f717639fd1a1666c77b6e176d9ec53 Mon Sep 17 00:00:00 2001 From: Antoine Cellerier Date: Sat, 28 Jun 2008 19:02:05 +0200 Subject: [PATCH] Move intf-popupmenu and video-on-top variables from playlist to libvlc. Should fix assertion errors. --- modules/gui/qt4/main_interface.cpp | 8 ++------ modules/gui/wxwidgets/timer.cpp | 14 ++------------ modules/video_output/msw/events.c | 12 +++--------- modules/video_output/sdl.c | 27 +++++++++------------------ modules/video_output/x11/xcommon.c | 22 ++++++++-------------- src/libvlc.c | 6 ++++-- src/playlist/engine.c | 2 -- src/video_output/vout_intf.c | 16 ++++++---------- 8 files changed, 34 insertions(+), 73 deletions(-) diff --git a/modules/gui/qt4/main_interface.cpp b/modules/gui/qt4/main_interface.cpp index d21cca070c..fda96ff3f1 100644 --- a/modules/gui/qt4/main_interface.cpp +++ b/modules/gui/qt4/main_interface.cpp @@ -211,9 +211,7 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf ) var_AddCallback( p_intf->p_libvlc, "intf-show", IntfShowCB, p_intf ); /* Register callback for the intf-popupmenu variable */ - playlist_t *p_playlist = pl_Yield( p_intf ); - var_AddCallback( p_playlist, "intf-popupmenu", PopupMenuCB, p_intf ); - pl_Release( p_intf ); + var_AddCallback( p_intf->p_libvlc, "intf-popupmenu", PopupMenuCB, p_intf ); /* VideoWidget connect mess to avoid different threads speaking to each other */ CONNECT( this, askReleaseVideo( void * ), @@ -282,9 +280,7 @@ MainInterface::~MainInterface() var_DelCallback( p_intf->p_libvlc, "intf-show", IntfShowCB, p_intf ); /* Unregister callback for the intf-popupmenu variable */ - playlist_t *p_playlist = pl_Yield( p_intf ); - var_DelCallback( p_playlist, "intf-popupmenu", PopupMenuCB, p_intf ); - pl_Release( p_intf ); + var_DelCallback( p_intf->p_libvlc, "intf-popupmenu", PopupMenuCB, p_intf ); p_intf->b_interaction = false; var_DelCallback( p_intf, "interaction", InteractCallback, this ); diff --git a/modules/gui/wxwidgets/timer.cpp b/modules/gui/wxwidgets/timer.cpp index b9f4e0e0ad..f65b090f0c 100644 --- a/modules/gui/wxwidgets/timer.cpp +++ b/modules/gui/wxwidgets/timer.cpp @@ -49,12 +49,7 @@ Timer::Timer( intf_thread_t *_p_intf, Interface *_p_main_interface ) var_AddCallback( p_intf->p_libvlc, "intf-show", IntfShowCB, p_intf ); /* Register callback for the intf-popupmenu variable */ - playlist_t *p_playlist = pl_Yield( p_intf ); - if( p_playlist != NULL ) - { - var_AddCallback( p_playlist, "intf-popupmenu", PopupMenuCB, p_intf ); - pl_Release( p_playlist ); - } + var_AddCallback( p_intf->p_libvlc, "intf-popupmenu", PopupMenuCB, p_intf ); Start( 100 /*milliseconds*/, wxTIMER_CONTINUOUS ); } @@ -64,12 +59,7 @@ Timer::~Timer() var_DelCallback( p_intf->p_libvlc, "intf-show", IntfShowCB, p_intf ); /* Unregister callback */ - playlist_t *p_playlist = pl_Yield( p_intf ); - if( p_playlist != NULL ) - { - var_DelCallback( p_playlist, "intf-popupmenu", PopupMenuCB, p_intf ); - pl_Release( p_playlist ); - } + var_DelCallback( p_intf->p_libvlc, "intf-popupmenu", PopupMenuCB, p_intf ); } /***************************************************************************** diff --git a/modules/video_output/msw/events.c b/modules/video_output/msw/events.c index 5a4eecd5ce..84dae38575 100644 --- a/modules/video_output/msw/events.c +++ b/modules/video_output/msw/events.c @@ -77,15 +77,9 @@ static int Control( vout_thread_t *p_vout, int i_query, va_list args ); static void DirectXPopupMenu( event_thread_t *p_event, bool b_open ) { - playlist_t *p_playlist = vlc_object_find( p_event, - VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); - if( p_playlist ) - { - vlc_value_t val; - val.b_bool = b_open; - var_Set( p_playlist, "intf-popupmenu", val ); - vlc_object_release( p_playlist ); - } + vlc_value_t val; + val.b_bool = b_open; + var_Set( p_event->p_libvlc, "intf-popupmenu", val ); } static int DirectXConvertKey( int i_key ); diff --git a/modules/video_output/sdl.c b/modules/video_output/sdl.c index 152bfb9533..97f326cc34 100644 --- a/modules/video_output/sdl.c +++ b/modules/video_output/sdl.c @@ -433,6 +433,7 @@ static int Manage( vout_thread_t *p_vout ) case SDL_BUTTON_LEFT: { playlist_t *p_playlist; + vlc_value_t val; var_Get( p_vout, "mouse-button-down", &val ); val.i_int &= ~1; @@ -441,15 +442,8 @@ static int Manage( vout_thread_t *p_vout ) val.b_bool = true; var_Set( p_vout, "mouse-clicked", val ); - p_playlist = pl_Yield( p_vout ); - - if( p_playlist != NULL ) - { - vlc_value_t val; - val.b_bool = false; - var_Set( p_playlist, "intf-popupmenu", val ); - pl_Release( p_playlist ); - } + val.b_bool = false; + var_Set( p_vout->p_libvlc, "intf-popupmenu", val ); } break; @@ -484,15 +478,8 @@ static int Manage( vout_thread_t *p_vout ) vlc_object_release( p_intf ); } - p_playlist = pl_Yield( p_vout ); - - if( p_playlist != NULL ) - { - vlc_value_t val; - val.b_bool = true; - var_Set( p_playlist, "intf-popupmenu", val ); - pl_Release( p_playlist ); - } + val.b_bool = true; + var_Set( p_vout->p_libvlc, "intf-popupmenu", val ); } break; } @@ -531,12 +518,16 @@ static int Manage( vout_thread_t *p_vout ) /* Quit event (close the window) */ case SDL_QUIT: { +#if 0 playlist_t *p_playlist = pl_Yield( p_vout ); if( p_playlist != NULL ) { playlist_Stop( p_playlist ); pl_Release( p_playlist ); } +#else +#warning FIXME FIXME ? +#endif } break; diff --git a/modules/video_output/x11/xcommon.c b/modules/video_output/x11/xcommon.c index b1b1a431ee..fadb892698 100644 --- a/modules/video_output/x11/xcommon.c +++ b/modules/video_output/x11/xcommon.c @@ -1300,13 +1300,8 @@ static int ManageVideo( vout_thread_t *p_vout ) val.b_bool = true; var_Set( p_vout, "mouse-clicked", val ); - p_playlist = pl_Yield( p_vout ); - if( p_playlist != NULL ) - { - vlc_value_t val; val.b_bool = false; - var_Set( p_playlist, "intf-popupmenu", val ); - pl_Release( p_playlist ); - } + vlc_value_t val; val.b_bool = false; + var_Set( p_vout->p_libvlc, "intf-popupmenu", val ); } break; @@ -1338,13 +1333,8 @@ static int ManageVideo( vout_thread_t *p_vout ) vlc_object_release( p_intf ); } - p_playlist = pl_Yield( p_vout ); - if( p_playlist != NULL ) - { - vlc_value_t val; val.b_bool = true; - var_Set( p_playlist, "intf-popupmenu", val ); - pl_Release( p_playlist ); - } + vlc_value_t val; val.b_bool = true; + var_Set( p_vout->p_libvlc, "intf-popupmenu", val ); } break; @@ -1474,12 +1464,16 @@ static int ManageVideo( vout_thread_t *p_vout ) == p_vout->p_sys->p_win->wm_delete_window ) ) { /* the user wants to close the window */ +#if 0 playlist_t * p_playlist = pl_Yield( p_vout ); if( p_playlist != NULL ) { playlist_Stop( p_playlist ); pl_Release( p_playlist ); } +#else +#warning FIXME FIXME FIXME +#endif } } diff --git a/src/libvlc.c b/src/libvlc.c index 9181821eeb..1e62c1fdf1 100644 --- a/src/libvlc.c +++ b/src/libvlc.c @@ -899,8 +899,10 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc, var_Create( p_libvlc, "volume-change", VLC_VAR_BOOL ); /* Create a variable for showing the interface (moved from playlist). */ - var_Create( p_playlist, "intf-show", VLC_VAR_BOOL ); - var_SetBool( p_playlist, "intf-show", true ); + var_Create( p_libvlc, "intf-show", VLC_VAR_BOOL ); + var_SetBool( p_libvlc, "intf-show", true ); + + var_Create( p_libvlc, "intf-popupmenu", VLC_VAR_BOOL ); /* * Get input filenames given as commandline arguments diff --git a/src/playlist/engine.c b/src/playlist/engine.c index 7dee54c007..f22d76036e 100644 --- a/src/playlist/engine.c +++ b/src/playlist/engine.c @@ -693,8 +693,6 @@ static void VariablesInit( playlist_t *p_playlist ) val.i_int = -1; var_Set( p_playlist, "playlist-current", val ); - var_Create( p_playlist, "intf-popupmenu", VLC_VAR_BOOL ); - var_Create( p_playlist, "activity", VLC_VAR_INTEGER ); var_SetInteger( p_playlist, "activity", 0 ); diff --git a/src/video_output/vout_intf.c b/src/video_output/vout_intf.c index 71b45eec15..af92376ca7 100644 --- a/src/video_output/vout_intf.c +++ b/src/video_output/vout_intf.c @@ -1135,15 +1135,13 @@ static int OnTopCallback( vlc_object_t *p_this, char const *psz_cmd, vlc_value_t oldval, vlc_value_t newval, void *p_data ) { vout_thread_t *p_vout = (vout_thread_t *)p_this; - playlist_t *p_playlist = pl_Yield( p_this ); vout_Control( p_vout, VOUT_SET_STAY_ON_TOP, newval.b_bool ); (void)psz_cmd; (void)oldval; (void)p_data; - /* Modify playlist as well because the vout might have to be restarted */ - var_Create( p_playlist, "video-on-top", VLC_VAR_BOOL ); - var_Set( p_playlist, "video-on-top", newval ); + /* Modify libvlc as well because the vout might have to be restarted */ + var_Create( p_vout->p_libvlc, "video-on-top", VLC_VAR_BOOL ); + var_Set( p_vout->p_libvlc, "video-on-top", newval ); - pl_Release( p_this ); return VLC_SUCCESS; } @@ -1152,15 +1150,13 @@ static int FullscreenCallback( vlc_object_t *p_this, char const *psz_cmd, { vout_thread_t *p_vout = (vout_thread_t *)p_this; vlc_value_t val; - playlist_t *p_playlist = pl_Yield( p_this ); (void)psz_cmd; (void)oldval; (void)p_data; p_vout->i_changes |= VOUT_FULLSCREEN_CHANGE; - /* Modify playlist as well because the vout might have to be restarted */ - var_Create( p_playlist, "fullscreen", VLC_VAR_BOOL ); - var_Set( p_playlist, "fullscreen", newval ); - pl_Release( p_playlist ); + /* Modify libvlc as well because the vout might have to be restarted */ + var_Create( p_vout->p_libvlc, "fullscreen", VLC_VAR_BOOL ); + var_Set( p_vout->p_libvlc, "fullscreen", newval ); val.b_bool = true; var_Set( p_vout, "intf-change", val ); -- 2.39.2