[vlc-devel] commit: media_player: Emit an event when the root media is changed. ( Pierre d'Herbemont )
git version control
git at videolan.org
Wed Dec 23 17:21:02 CET 2009
vlc | branch: master | Pierre d'Herbemont <pdherbemont at free.fr> | Tue Dec 22 20:49:31 2009 +0100| [5871680a4a5154314beb0c7c507e8629fd44f361] | committer: Pierre d'Herbemont
media_player: Emit an event when the root media is changed.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=5871680a4a5154314beb0c7c507e8629fd44f361
---
include/vlc/libvlc_events.h | 10 +++++++++-
src/control/media_player.c | 9 +++++++++
2 files changed, 18 insertions(+), 1 deletions(-)
diff --git a/include/vlc/libvlc_events.h b/include/vlc/libvlc_events.h
index 0a9f295..1055262 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 074b1e0..74bae47 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 );
+
}
/**************************************************************************
More information about the vlc-devel
mailing list