X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fmisc%2Faudioscrobbler.c;h=8bde95ef6a8ca1f9e9474a61f4bf3a0d33e75b50;hb=552b5247eea6d1c0c93407c49ce64a39af751e43;hp=2af57e783b875493b8b7c3e4e4337d70bbd480fb;hpb=449fd28aaf007c6411251dae9d0dbfdc65b135d1;p=vlc diff --git a/modules/misc/audioscrobbler.c b/modules/misc/audioscrobbler.c index 2af57e783b..8bde95ef6a 100644 --- a/modules/misc/audioscrobbler.c +++ b/modules/misc/audioscrobbler.c @@ -38,7 +38,8 @@ # include "config.h" #endif -#include +#include +#include #include #include #include @@ -180,13 +181,13 @@ static int Open( vlc_object_t *p_this ) p_intf->p_sys = p_sys; - vlc_mutex_init( p_this, &p_sys->lock ); + vlc_mutex_init( &p_sys->lock ); p_playlist = pl_Yield( p_intf ); 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; @@ -220,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 */ @@ -270,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 */ @@ -356,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, @@ -523,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 ) @@ -698,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; @@ -748,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 @@ -929,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 )