From 5871680a4a5154314beb0c7c507e8629fd44f361 Mon Sep 17 00:00:00 2001 From: Pierre d'Herbemont Date: Tue, 22 Dec 2009 20:49:31 +0100 Subject: [PATCH] media_player: Emit an event when the root media is changed. --- include/vlc/libvlc_events.h | 10 +++++++++- src/control/media_player.c | 9 +++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/include/vlc/libvlc_events.h b/include/vlc/libvlc_events.h index 0a9f2953e0..1055262253 100644 --- a/include/vlc/libvlc_events.h +++ b/include/vlc/libvlc_events.h @@ -101,7 +101,9 @@ extern "C" { DEF( VlmMediaInstanceStatusPause ), \ DEF( VlmMediaInstanceStatusEnd ), \ DEF( VlmMediaInstanceStatusError ), \ - /* New event types HERE */ + \ + DEF( MediaPlayerMediaChanged ), \ +/* New event types HERE */ #ifdef __cplusplus enum libvlc_event_type_e { @@ -248,6 +250,12 @@ struct libvlc_event_t const char * psz_media_name; const char * psz_instance_name; } vlm_media_event; + + /* Extra MediaPlayer */ + struct + { + libvlc_media_t * new_media; + } media_player_media_changed; } u; }; diff --git a/src/control/media_player.c b/src/control/media_player.c index 074b1e00ac..74bae473c8 100644 --- a/src/control/media_player.c +++ b/src/control/media_player.c @@ -393,6 +393,8 @@ libvlc_media_player_new( libvlc_instance_t *instance, libvlc_exception_t *e ) /* Snapshot initialization */ register_event(mp, SnapshotTaken); + register_event(mp, MediaChanged); + /* Attach a var callback to the global object to provide the glue between * vout_thread that generates the event and media_player that re-emits it * with its own event manager @@ -533,6 +535,13 @@ void libvlc_media_player_set_media( p_mi->p_libvlc_instance = p_md->p_libvlc_instance; unlock(p_mi); + + /* Send an event for the newly available media */ + libvlc_event_t event; + event.type = libvlc_MediaPlayerMediaChanged; + event.u.media_player_media_changed.new_media = p_md; + libvlc_event_send( p_mi->p_event_manager, &event ); + } /************************************************************************** -- 2.39.2