Commit b9a26cf1 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

Pass input item through playlist item-change rather than its ID

parent ea9c21f4
...@@ -414,13 +414,14 @@ int VlcProc::onItemChange( vlc_object_t *pObj, const char *pVariable, ...@@ -414,13 +414,14 @@ int VlcProc::onItemChange( vlc_object_t *pObj, const char *pVariable,
void *pParam ) void *pParam )
{ {
VlcProc *pThis = (VlcProc*)pParam; VlcProc *pThis = (VlcProc*)pParam;
input_item_t *p_item = newval.p_address;
// Update the stream variable // Update the stream variable
pThis->updateStreamName(); pThis->updateStreamName();
// Create a playtree notify command // Create a playtree notify command
CmdPlaytreeUpdate *pCmdTree = new CmdPlaytreeUpdate( pThis->getIntf(), CmdPlaytreeUpdate *pCmdTree = new CmdPlaytreeUpdate( pThis->getIntf(),
newVal.i_int ); p_item->i_id );
// Push the command in the asynchronous command queue // Push the command in the asynchronous command queue
AsyncQueue *pQueue = AsyncQueue::instance( pThis->getIntf() ); AsyncQueue *pQueue = AsyncQueue::instance( pThis->getIntf() );
......
...@@ -183,7 +183,9 @@ static int ItemChange( vlc_object_t *p_this, const char *psz_var, ...@@ -183,7 +183,9 @@ static int ItemChange( vlc_object_t *p_this, const char *psz_var,
} }
else else
{ {
if( newval.i_int != p_intf->p_sys->i_id ) /* "item-change" */ input_item_t *p_item = newval.p_address;
if( p_item->i_id != p_intf->p_sys->i_id ) /* "item-change" */
return VLC_SUCCESS; return VLC_SUCCESS;
/* Some variable bitrate inputs call "item-change callbacks each time /* Some variable bitrate inputs call "item-change callbacks each time
* their length is updated, that is several times per second. * their length is updated, that is several times per second.
......
...@@ -272,8 +272,7 @@ static void VariablesInit( playlist_t *p_playlist ) ...@@ -272,8 +272,7 @@ static void VariablesInit( playlist_t *p_playlist )
var_Create( p_playlist, "intf-change", VLC_VAR_BOOL ); var_Create( p_playlist, "intf-change", VLC_VAR_BOOL );
var_SetBool( p_playlist, "intf-change", true ); var_SetBool( p_playlist, "intf-change", true );
var_Create( p_playlist, "item-change", VLC_VAR_INTEGER ); var_Create( p_playlist, "item-change", VLC_VAR_ADDRESS );
var_SetInteger( p_playlist, "item-change", -1 );
var_Create( p_playlist, "playlist-item-deleted", VLC_VAR_INTEGER ); var_Create( p_playlist, "playlist-item-deleted", VLC_VAR_INTEGER );
var_SetInteger( p_playlist, "playlist-item-deleted", -1 ); var_SetInteger( p_playlist, "playlist-item-deleted", -1 );
......
...@@ -419,7 +419,7 @@ static void *Thread( void *p_data ) ...@@ -419,7 +419,7 @@ static void *Thread( void *p_data )
{ {
PL_DEBUG( "found art for %s in cache", psz_name ); PL_DEBUG( "found art for %s in cache", psz_name );
input_item_SetArtFetched( p_item, true ); input_item_SetArtFetched( p_item, true );
var_SetInteger( p_playlist, "item-change", p_item->i_id ); var_SetAddress( p_playlist, "item-change", p_item );
} }
else else
{ {
......
...@@ -117,7 +117,7 @@ static void input_item_changed( const vlc_event_t * p_event, ...@@ -117,7 +117,7 @@ static void input_item_changed( const vlc_event_t * p_event,
{ {
playlist_item_t *p_item = user_data; playlist_item_t *p_item = user_data;
VLC_UNUSED( p_event ); VLC_UNUSED( p_event );
var_SetInteger( p_item->p_playlist, "item-change", p_item->p_input->i_id ); var_SetAddress( p_item->p_playlist, "item-change", p_item->p_input );
} }
/***************************************************************************** /*****************************************************************************
...@@ -625,7 +625,7 @@ static playlist_item_t *ItemToNode( playlist_t *p_playlist, ...@@ -625,7 +625,7 @@ static playlist_item_t *ItemToNode( playlist_t *p_playlist,
} }
pl_priv(p_playlist)->b_reset_currently_playing = true; pl_priv(p_playlist)->b_reset_currently_playing = true;
vlc_cond_signal( &pl_priv(p_playlist)->signal ); vlc_cond_signal( &pl_priv(p_playlist)->signal );
var_SetInteger( p_playlist, "item-change", p_item_in_category->p_input->i_id ); var_SetAddress( p_playlist, "item-change", p_item_in_category->p_input );
PL_UNLOCK_IF( !b_locked ); PL_UNLOCK_IF( !b_locked );
return p_item_in_category; return p_item_in_category;
} }
......
...@@ -130,7 +130,7 @@ static void Preparse( playlist_t *p_playlist, input_item_t *p_item ) ...@@ -130,7 +130,7 @@ static void Preparse( playlist_t *p_playlist, input_item_t *p_item )
input_Preparse( VLC_OBJECT(p_playlist), p_item ); input_Preparse( VLC_OBJECT(p_playlist), p_item );
input_item_SetPreparsed( p_item, true ); input_item_SetPreparsed( p_item, true );
var_SetInteger( p_playlist, "item-change", p_item->i_id ); var_SetAddress( p_playlist, "item-change", p_item );
} }
stats_TimerStop( p_playlist, STATS_TIMER_PREPARSE ); stats_TimerStop( p_playlist, STATS_TIMER_PREPARSE );
......
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