p_playlist = pl_Get( p_intf );
var_AddCallback( p_playlist, "item-change", ItemChange, p_intf );
- var_AddCallback( p_playlist, "item-current", ItemChange, p_intf );
+ var_AddCallback( p_playlist, "activity", ItemChange, p_intf );
[p_sys->o_growl_delegate registerToGrowl];
return VLC_SUCCESS;
intf_sys_t *p_sys = p_intf->p_sys;
var_DelCallback( p_playlist, "item-change", ItemChange, p_intf );
- var_DelCallback( p_playlist, "item-current", ItemChange, p_intf );
+ var_DelCallback( p_playlist, "activity", ItemChange, p_intf );
[p_sys->o_growl_delegate release];
free( p_sys );
char *psz_album = NULL;
input_item_t *p_item = newval.p_address;
- bool b_is_item_current = !strcmp( "item-current", psz_var );
+ bool b_is_item_current = !strcmp( "activity", psz_var );
/* Don't update each time an item has been preparsed */
if( b_is_item_current )
{ /* stores the current input item id */
- p_intf->p_sys->i_id = p_item->i_id;
- p_intf->p_sys->i_item_changes = 0;
+ input_thread_t *p_input = playlist_CurrentInput( (playlist_t*)p_this );
+ if( !p_input )
+ return VLC_SUCCESS;
+
+ p_item = input_GetItem( p_input );
+ if( p_intf->p_sys->i_id != p_item->i_id )
+ {
+ p_intf->p_sys->i_id = p_item->i_id;
+ p_intf->p_sys->i_item_changes = 0;
+ }
+
+ vlc_object_release( p_input );
return VLC_SUCCESS;
}
/* ignore items which weren't pre-parsed yet */
else if( !input_item_IsPreparsed(p_item) )
return VLC_SUCCESS;
else
- {
- if( p_item->i_id != p_intf->p_sys->i_id ) { /* "item-change" */
- p_intf->p_sys->i_item_changes = 0;
+ { /* "item-change" */
+
+ if( p_item->i_id != p_intf->p_sys->i_id )
return VLC_SUCCESS;
- }
+
/* Some variable bitrate inputs call "item-change" callbacks each time
* their length is updated, that is several times per second.
* We'll limit the number of changes to 1 per input. */
p_intf->p_sys->i_item_changes++;
}
-
- input_thread_t *p_input = playlist_CurrentInput( (playlist_t*)p_this );
-
- if( !p_input ) return VLC_SUCCESS;
-
- if( p_input->b_dead || !input_GetItem(p_input)->psz_name )
- {
- /* Not playing anything ... */
- vlc_object_release( p_input );
- return VLC_SUCCESS;
- }
-
/* Playing something ... */
if( input_item_GetNowPlaying( p_item ) )
psz_title = input_item_GetNowPlaying( p_item );
if( EMPTY_STR( psz_title ) )
{
free( psz_title );
- vlc_object_release( p_input );
return VLC_SUCCESS;
}
free( psz_title );
free( psz_artist );
free( psz_album );
- vlc_object_release( p_input );
return VLC_ENOMEM;
}
free( psz_arturl );
free( psz_tmp );
- vlc_object_release( p_input );
return VLC_SUCCESS;
}