[vlc-devel] commit: playlist: Respond to input state changed event. (Pierre d' Herbemont )

git version control git at videolan.org
Sat Jun 14 15:17:00 CEST 2008


vlc | branch: master | Pierre d'Herbemont <pdherbemont at videolan.org> | Sat Jun 14 15:12:52 2008 +0200| [94e3fe126d7f582d1c64b0c23d4032d657df5a48]

playlist: Respond to input state changed event.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=94e3fe126d7f582d1c64b0c23d4032d657df5a48
---

 src/playlist/engine.c |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/src/playlist/engine.c b/src/playlist/engine.c
index b6b8487..6814480 100644
--- a/src/playlist/engine.c
+++ b/src/playlist/engine.c
@@ -203,6 +203,14 @@ static void ObjectGarbageCollector( playlist_t *p_playlist, bool b_force )
     vlc_mutex_unlock( &p_playlist->gc_lock );
 }
 
+/* Input Callback */
+static void input_state_changed( const vlc_event_t * event, void * data )
+{
+    (void)event;
+    playlist_t * p_playlist = data;
+    playlist_Signal( p_playlist );
+}
+
 /* Internals */
 void playlist_release_current_input( playlist_t * p_playlist )
 {
@@ -211,6 +219,10 @@ void playlist_release_current_input( playlist_t * p_playlist )
     if( !p_playlist->p_input ) return;
 
     input_thread_t * p_input = 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 );
     p_playlist->p_input = NULL;
 
     /* Release the playlist lock, because we may get stuck
@@ -231,9 +243,13 @@ void playlist_set_current_input(
     {
         vlc_object_yield( p_input );
         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 );
     }
 }
 
+
 /**
  * @}
  */




More information about the vlc-devel mailing list