[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