vlc_value_t oldval, vlc_value_t newval, void *a )
{
(void)psz_cmd; (void)oldval; (void)newval; (void)a;
+ playlist_t *p_playlist = (playlist_t*)p_this;
- pl_priv((playlist_t*)p_this)->b_reset_currently_playing = true;
- playlist_Signal( ((playlist_t*)p_this) );
+ PL_LOCK;
+
+ pl_priv(p_playlist)->b_reset_currently_playing = true;
+ vlc_object_signal_unlocked( p_playlist );
+
+ PL_UNLOCK;
return VLC_SUCCESS;
}
static const char playlist_name[] = "playlist";
playlist_t *p_playlist;
playlist_private_t *p;
- bool b_save;
/* Allocate structure */
p = vlc_custom_create( p_parent, sizeof( *p ),
pl_priv(p_playlist)->request.b_request = false;
pl_priv(p_playlist)->status.i_status = PLAYLIST_STOPPED;
- b_save = pl_priv(p_playlist)->b_auto_preparse;
pl_priv(p_playlist)->b_auto_preparse = false;
playlist_MLLoad( p_playlist );
pl_priv(p_playlist)->b_auto_preparse = true;
}
/* Input Callback */
-static void input_state_changed( const vlc_event_t * event, void * data )
+static int InputEvent( vlc_object_t *p_this, char const *psz_cmd,
+ vlc_value_t oldval, vlc_value_t newval, void *p_data )
{
- (void)event;
- playlist_t * p_playlist = data;
- playlist_Signal( p_playlist );
-}
+ VLC_UNUSED(p_this); VLC_UNUSED(psz_cmd); VLC_UNUSED(oldval);
+ playlist_t *p_playlist = p_data;
+
+ if( newval.i_int != INPUT_EVENT_STATE &&
+ newval.i_int != INPUT_EVENT_ES )
+ return VLC_SUCCESS;
-/* Input Callback */
-static void input_selected_stream_changed( const vlc_event_t * event, void * data )
-{
- (void)event;
- playlist_t * p_playlist = data;
PL_LOCK;
- pl_priv(p_playlist)->gc_date = mdate();
+
+ if( newval.i_int == INPUT_EVENT_ES )
+ pl_priv(p_playlist)->gc_date = mdate();
+
vlc_object_signal_unlocked( p_playlist );
+
PL_UNLOCK;
+ return VLC_SUCCESS;
}
/* Internals */
if( !pl_priv(p_playlist)->p_input ) return;
input_thread_t * p_input = pl_priv(p_playlist)->p_input;
- vlc_event_manager_t * p_em = input_get_event_manager( p_input );
- vlc_event_detach( p_em, vlc_InputStateChanged,
- input_state_changed, p_playlist );
- vlc_event_detach( p_em, vlc_InputSelectedStreamChanged,
- input_selected_stream_changed, p_playlist );
+ var_DelCallback( p_input, "intf-event", InputEvent, p_playlist );
pl_priv(p_playlist)->p_input = NULL;
/* Release the playlist lock, because we may get stuck
{
vlc_object_hold( p_input );
pl_priv(p_playlist)->p_input = p_input;
- vlc_event_manager_t * p_em = input_get_event_manager( p_input );
- vlc_event_attach( p_em, vlc_InputStateChanged,
- input_state_changed, p_playlist );
- vlc_event_attach( p_em, vlc_InputSelectedStreamChanged,
- input_selected_stream_changed, p_playlist );
+
+ var_AddCallback( p_input, "intf-event", InputEvent, p_playlist );
}
}