]> git.sesse.net Git - vlc/commitdiff
media_player: Emit an event when the root media is changed.
authorPierre d'Herbemont <pdherbemont@free.fr>
Tue, 22 Dec 2009 19:49:31 +0000 (20:49 +0100)
committerPierre d'Herbemont <pdherbemont@free.fr>
Wed, 23 Dec 2009 16:15:26 +0000 (17:15 +0100)
include/vlc/libvlc_events.h
src/control/media_player.c

index 0a9f2953e0ad527a9fb752a4cee7b6279d2208f9..1055262253c9fa0963985e33c04cd93c7f6fb481 100644 (file)
@@ -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;
 };
 
index 074b1e00ac15032882e4677aa8b4af573d5e70a7..74bae473c8779500b51ea1ff9fb7b853010ccef3 100644 (file)
@@ -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 );
+    
 }
 
 /**************************************************************************