vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Tue Aug 21 19:31:28 2012 +0300| [29542f0187d99ac1fbdcf14a66769dacb7e37887] | committer: Rémi Denis-Courmont
playlist preparser: do not wait for playing item (refs #5460) This does not really work anyway. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=29542f0187d99ac1fbdcf14a66769dacb7e37887 --- src/playlist/fetcher.c | 61 ------------------------------------------------ 1 file changed, 61 deletions(-) diff --git a/src/playlist/fetcher.c b/src/playlist/fetcher.c index f77a814..215725c 100644 --- a/src/playlist/fetcher.c +++ b/src/playlist/fetcher.c @@ -348,62 +348,6 @@ static void FetchMeta( playlist_fetcher_t *p_fetcher, input_item_t *p_item ) vlc_object_release( p_demux_meta ); } -static int InputEvent( vlc_object_t *p_this, char const *psz_cmd, - vlc_value_t oldval, vlc_value_t newval, void *p_data ) -{ - VLC_UNUSED(p_this); VLC_UNUSED(psz_cmd); VLC_UNUSED(oldval); - vlc_cond_t *p_cond = p_data; - - if( newval.i_int == INPUT_EVENT_ITEM_META || - newval.i_int == INPUT_EVENT_DEAD ) - vlc_cond_signal( p_cond ); - - return VLC_SUCCESS; -} - - -/* Check if it is not yet preparsed and if so wait for it - * (at most 0.5s) - * (This can happen if we fetch art on play) - * FIXME this doesn't work if we need to fetch meta before art... - */ -static void WaitPreparsed( playlist_fetcher_t *p_fetcher, input_item_t *p_item ) -{ - if( input_item_IsPreparsed( p_item ) ) - return; - - input_thread_t *p_input = playlist_CurrentInput( p_fetcher->p_playlist ); - if( !p_input ) - return; - - if( input_GetItem( p_input ) != p_item ) - goto exit; - - vlc_cond_t cond; - vlc_cond_init( &cond ); - var_AddCallback( p_input, "intf-event", InputEvent, &cond ); - - const mtime_t i_deadline = mdate() + 500*1000; - bool b_timeout = false; - - while( !p_input->b_eof && !p_input->b_error - && !input_item_IsPreparsed( p_item ) && !b_timeout ) - { - /* A bit weird, but input_item_IsPreparsed holds the protected value */ - /* FIXME: locking looks wrong here */ - vlc_mutex_lock( &p_fetcher->lock ); - if( vlc_cond_timedwait( &cond, &p_fetcher->lock, i_deadline ) ) - b_timeout = true; - vlc_mutex_unlock( &p_fetcher->lock ); - } - - var_DelCallback( p_input, "intf-event", InputEvent, &cond ); - vlc_cond_destroy( &cond ); - -exit: - vlc_object_release( p_input ); -} - static void *Thread( void *p_data ) { playlist_fetcher_t *p_fetcher = p_data; @@ -429,11 +373,6 @@ static void *Thread( void *p_data ) if( !p_item ) break; - /* */ - - /* Wait that the input item is preparsed if it is being played */ - WaitPreparsed( p_fetcher, p_item ); - /* Triggers "meta fetcher", eventually fetch meta on the network. * They are identical to "meta reader" expect that may actually * takes time. That's why they are running here. _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
