X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fplaylist%2Ffetcher.c;h=470896bef50746bdc036a881d5e269f402f00a03;hb=f5b549f5a73c98934d500e13949d09d45b147583;hp=de85c8bf2cfb86a55fbb6e05119780a1b570309a;hpb=eed0e7361a853185b673446c0b2adb58e99b3cd7;p=vlc diff --git a/src/playlist/fetcher.c b/src/playlist/fetcher.c index de85c8bf2c..470896bef5 100644 --- a/src/playlist/fetcher.c +++ b/src/playlist/fetcher.c @@ -34,6 +34,7 @@ #include #include #include +#include #include "art.h" #include "fetcher.h" @@ -90,16 +91,12 @@ void playlist_fetcher_Push( playlist_fetcher_t *p_fetcher, p_fetcher->i_waiting, p_item ); if( !p_fetcher->b_live ) { - vlc_thread_t th; - - if( vlc_clone( &th, Thread, p_fetcher, VLC_THREAD_PRIORITY_LOW ) ) + if( vlc_clone_detach( NULL, Thread, p_fetcher, + VLC_THREAD_PRIORITY_LOW ) ) msg_Err( p_fetcher->p_playlist, "cannot spawn secondary preparse thread" ); else - { - vlc_detach( th ); p_fetcher->b_live = true; - } } vlc_mutex_unlock( &p_fetcher->lock ); } @@ -185,7 +182,7 @@ static int FindArt( playlist_fetcher_t *p_fetcher, input_item_t *p_item ) char *psz_arturl = input_item_GetArtURL( p_item ); if( psz_arturl ) { - /* We already have an URL */ + /* We already have a URL */ if( !strncmp( psz_arturl, "file://", strlen( "file://" ) ) ) { free( psz_arturl ); @@ -221,20 +218,22 @@ static int FindArt( playlist_fetcher_t *p_fetcher, input_item_t *p_item ) vlc_object_t *p_parent = VLC_OBJECT(p_fetcher->p_playlist); art_finder_t *p_finder = - vlc_custom_create( p_parent, sizeof( *p_finder ), VLC_OBJECT_GENERIC, - "art finder" ); + vlc_custom_create( p_parent, sizeof( *p_finder ), "art finder" ); if( p_finder != NULL) { module_t *p_module; - vlc_object_attach( p_finder, p_parent ); p_finder->p_item = p_item; p_module = module_need( p_finder, "art finder", NULL, false ); if( p_module ) { module_unneed( p_finder, p_module ); - i_ret = 1; + /* Try immediately if found in cache by download URL */ + if( !playlist_FindArtInCache( p_item ) ) + i_ret = 0; + else + i_ret = 1; } vlc_object_release( p_finder ); } @@ -333,12 +332,10 @@ error: static void FetchMeta( playlist_fetcher_t *p_fetcher, input_item_t *p_item ) { demux_meta_t *p_demux_meta = vlc_custom_create(p_fetcher->p_playlist, - sizeof(*p_demux_meta), - VLC_OBJECT_GENERIC, "demux meta" ); + sizeof(*p_demux_meta), "demux meta" ); if( !p_demux_meta ) return; - vlc_object_attach( p_demux_meta, p_fetcher->p_playlist ); p_demux_meta->p_demux = NULL; p_demux_meta->p_item = p_item;