Commit 56acdf5c authored by Ilkka Ollakka's avatar Ilkka Ollakka

convert audioscrobbler-plugin to intf-event stuff, that pause/start counting

could do reviewing.
parent b0068f14
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
* $Id$ * $Id$
* *
* Author: Rafaël Carré <funman at videolanorg> * Author: Rafaël Carré <funman at videolanorg>
* Ilkka Ollakka <ileoo at videolan org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
...@@ -215,7 +216,7 @@ static void Close( vlc_object_t *p_this ) ...@@ -215,7 +216,7 @@ static void Close( vlc_object_t *p_this )
if ( p_input ) if ( p_input )
{ {
if( p_sys->b_state_cb ) if( p_sys->b_state_cb )
var_DelCallback( p_input, "state", PlayingChange, p_intf ); var_DelCallback( p_input, "intf-event", PlayingChange, p_intf );
vlc_object_release( p_input ); vlc_object_release( p_input );
} }
...@@ -258,6 +259,7 @@ static void Run( intf_thread_t *p_intf ) ...@@ -258,6 +259,7 @@ static void Run( intf_thread_t *p_intf )
{ {
bool b_wait = false; bool b_wait = false;
vlc_restorecancel( canc ); vlc_restorecancel( canc );
vlc_mutex_lock( &p_sys->lock ); vlc_mutex_lock( &p_sys->lock );
mutex_cleanup_push( &p_sys->lock ); mutex_cleanup_push( &p_sys->lock );
...@@ -462,20 +464,30 @@ static int PlayingChange( vlc_object_t *p_this, const char *psz_var, ...@@ -462,20 +464,30 @@ static int PlayingChange( vlc_object_t *p_this, const char *psz_var,
{ {
intf_thread_t *p_intf = ( intf_thread_t* ) p_data; intf_thread_t *p_intf = ( intf_thread_t* ) p_data;
intf_sys_t *p_sys = p_intf->p_sys; intf_sys_t *p_sys = p_intf->p_sys;
input_thread_t *p_input = ( input_thread_t* )p_this;
vlc_value_t state_value;
VLC_UNUSED( p_this ); VLC_UNUSED( psz_var ); VLC_UNUSED( p_this ); VLC_UNUSED( psz_var );
if( p_sys->b_meta_read == false && newval.i_int >= PLAYING_S ) if( newval.i_int != INPUT_EVENT_STATE ) return VLC_SUCCESS;
state_value.i_int = 0;
var_Get( p_input, "state", &state_value );
if( p_sys->b_meta_read == false && state_value.i_int >= PLAYING_S )
{ {
ReadMetaData( p_intf ); ReadMetaData( p_intf );
return VLC_SUCCESS; return VLC_SUCCESS;
} }
if( newval.i_int >= END_S )
if( state_value.i_int >= END_S )
AddToQueue( p_intf ); AddToQueue( p_intf );
else if( oldval.i_int == PLAYING_S && newval.i_int == PAUSE_S ) else if( state_value.i_int == PAUSE_S )
p_sys->time_pause = mdate(); p_sys->time_pause = mdate();
else if( oldval.i_int == PAUSE_S && newval.i_int == PLAYING_S ) else if( p_sys->time_pause > 0 && state_value.i_int == PLAYING_S )
p_sys->time_total_pauses += ( mdate() - p_sys->time_pause ); p_sys->time_total_pauses += ( mdate() - p_sys->time_pause );
return VLC_SUCCESS; return VLC_SUCCESS;
...@@ -531,7 +543,7 @@ static int ItemChange( vlc_object_t *p_this, const char *psz_var, ...@@ -531,7 +543,7 @@ static int ItemChange( vlc_object_t *p_this, const char *psz_var,
time( &p_sys->p_current_song.date ); /* to be sent to last.fm */ time( &p_sys->p_current_song.date ); /* to be sent to last.fm */
p_sys->p_current_song.i_start = mdate(); /* only used locally */ p_sys->p_current_song.i_start = mdate(); /* only used locally */
var_AddCallback( p_input, "state", PlayingChange, p_intf ); var_AddCallback( p_input, "intf-event", PlayingChange, p_intf );
p_sys->b_state_cb = true; p_sys->b_state_cb = true;
if( input_item_IsPreparsed( p_item ) ) if( input_item_IsPreparsed( p_item ) )
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment