X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fmisc%2Faudioscrobbler.c;h=8bde95ef6a8ca1f9e9474a61f4bf3a0d33e75b50;hb=b5277240aa78e2515cc4f32ca4b582160b2ee8d8;hp=b6ee7739f3154c71b3510b48f13d8f5d237ecfc9;hpb=27d483e9ef7a451397d7857251c8d67097661f1d;p=vlc diff --git a/modules/misc/audioscrobbler.c b/modules/misc/audioscrobbler.c index b6ee7739f3..8bde95ef6a 100644 --- a/modules/misc/audioscrobbler.c +++ b/modules/misc/audioscrobbler.c @@ -38,7 +38,7 @@ # include "config.h" #endif -#include +#include #include #include #include @@ -187,7 +187,7 @@ static int Open( vlc_object_t *p_this ) PL_LOCK; var_AddCallback( p_playlist, "playlist-current", ItemChange, p_intf ); PL_UNLOCK; - pl_Release( p_playlist ); + pl_Release( p_intf ); p_intf->pf_run = Run; @@ -221,7 +221,7 @@ static void Close( vlc_object_t *p_this ) } PL_UNLOCK; - pl_Release( p_playlist ); + pl_Release( p_intf ); p_intf->b_dead = true; /* we lock the mutex in case p_sys is being accessed from a callback */ @@ -271,28 +271,24 @@ static void Run( intf_thread_t *p_intf ) /* main loop */ for( ;; ) { - bool b_die = false, b_wait = false; + bool b_wait = false; vlc_object_lock( p_intf ); - if( vlc_object_alive( p_intf ) ) - { - if( mdate() < p_sys->next_exchange ) - /* wait until we can resubmit, i.e. */ - b_wait = !vlc_object_timedwait( p_intf, - p_sys->next_exchange ); - else - /* wait for data to submit */ - /* we are signaled each time there is a song to submit */ - vlc_object_wait( p_intf ); - } - b_die = !vlc_object_alive( p_intf ); - vlc_object_unlock( p_intf ); - - if( b_die ) + if( !vlc_object_alive( p_intf ) ) { + vlc_object_unlock( p_intf ); msg_Dbg( p_intf, "audioscrobbler is dying"); return; } + if( mdate() < p_sys->next_exchange ) + /* wait until we can resubmit, i.e. */ + b_wait = vlc_object_timedwait( p_intf, p_sys->next_exchange ) == 0; + else + /* wait for data to submit */ + /* we are signaled each time there is a song to submit */ + vlc_object_wait( p_intf ); + vlc_object_unlock( p_intf ); + if( b_wait ) continue; /* holding on until next_exchange */ @@ -357,7 +353,7 @@ static void Run( intf_thread_t *p_intf ) p_song = &p_sys->p_queue[i_song]; if( !asprintf( &psz_submit_song, "&a%%5B%d%%5D=%s&t%%5B%d%%5D=%s" - "&i%%5B%d%%5D=%llu&o%%5B%d%%5D=P&r%%5B%d%%5D=" + "&i%%5B%d%%5D=%ju&o%%5B%d%%5D=P&r%%5B%d%%5D=" "&l%%5B%d%%5D=%d&b%%5B%d%%5D=%s" "&n%%5B%d%%5D=%s&m%%5B%d%%5D=%s", i_song, p_song->psz_a, i_song, p_song->psz_t, @@ -524,13 +520,13 @@ static int ItemChange( vlc_object_t *p_this, const char *psz_var, if( !p_input || p_input->b_dead ) { PL_UNLOCK; - pl_Release( p_playlist ); + pl_Release( p_intf ); return VLC_SUCCESS; } vlc_object_yield( p_input ); PL_UNLOCK; - pl_Release( p_playlist ); + pl_Release( p_intf ); p_item = input_GetItem( p_input ); if( !p_item ) @@ -699,7 +695,7 @@ static int Handshake( intf_thread_t *p_this ) { char *psz_username, *psz_password; time_t timestamp; - char psz_timestamp[33]; + char psz_timestamp[21]; struct md5_s p_struct_md5; @@ -749,7 +745,8 @@ static int Handshake( intf_thread_t *p_this ) return VLC_ENOMEM; } - snprintf( psz_timestamp, 33, "%llu", (uintmax_t)timestamp ); + snprintf( psz_timestamp, sizeof( psz_timestamp ), "%"PRIu64, + (uint64_t)timestamp ); /* generates a md5 hash of : * - md5 hash of the password, plus @@ -930,13 +927,13 @@ static int ReadMetaData( intf_thread_t *p_this ) if( !p_input ) { PL_UNLOCK; - pl_Release( p_playlist ); + pl_Release( p_this ); return( VLC_SUCCESS ); } vlc_object_yield( p_input ); PL_UNLOCK; - pl_Release( p_playlist ); + pl_Release( p_this ); p_item = input_GetItem( p_input ); if( !p_item )