]> git.sesse.net Git - vlc/blobdiff - src/input/event.c
Allows requesting active aout/vout from an input with associated events.
[vlc] / src / input / event.c
index 4c4e3c913d898d0a590a64dd36441c372a2dc6d1..8f973407bff74426f6f8404ff0cf33dcaa983d31 100644 (file)
 #include <vlc_input.h>
 #include "input_internal.h"
 #include "event.h"
+#include <assert.h>
 
 static void Trigger( input_thread_t *p_input, int i_type );
 
 /*****************************************************************************
  * Event for input.c
  *****************************************************************************/
-void input_SendEventTimes( input_thread_t *p_input, const input_event_times_t *p_times )
+void input_SendEventDead( input_thread_t *p_input )
+{
+    p_input->b_dead = true;
+
+    Trigger( p_input, INPUT_EVENT_DEAD );
+}
+
+void input_SendEventTimes( input_thread_t *p_input,
+                           double f_position, mtime_t i_time, mtime_t i_length )
 {
     vlc_value_t val;
 
     /* */
-    val.f_float = p_times->f_position;
+    val.f_float = f_position;
     var_Change( p_input, "position", VLC_VAR_SETVALUE, &val, NULL );
 
     /* */
-    val.i_time = p_times->i_time;
+    val.i_time = i_time;
     var_Change( p_input, "time", VLC_VAR_SETVALUE, &val, NULL );
 
        /* FIXME ugly + what about meta change event ? */
-    if( var_GetTime( p_input, "length" ) != p_times->i_length )
-        input_item_SetDuration( p_input->p->input.p_item, p_times->i_length );
-    val.i_time = p_times->i_length;
+    if( var_GetTime( p_input, "length" ) != i_length )
+        input_item_SetDuration( p_input->p->p_item, i_length );
+    val.i_time = i_length;
     var_Change( p_input, "length", VLC_VAR_SETVALUE, &val, NULL );
 
     Trigger( p_input, INPUT_EVENT_TIMES );
@@ -146,13 +155,16 @@ void input_SendEventState( input_thread_t *p_input, int i_state )
     var_Change( p_input, "state", VLC_VAR_SETVALUE, &val, NULL );
 
     Trigger( p_input, INPUT_EVENT_STATE );
+}
 
-       /* FIXME remove this ugliness */
-    vlc_event_t event;
+void input_SendEventCache( input_thread_t *p_input, double f_level )
+{
+    vlc_value_t val;
 
-    event.type = vlc_InputStateChanged;
-    event.u.input_state_changed.new_state = i_state;
-    vlc_event_send( &p_input->p->event_manager, &event );
+    val.f_float = f_level;
+       var_Change( p_input, "cache", VLC_VAR_SETVALUE, &val, NULL );
+
+    Trigger( p_input, INPUT_EVENT_CACHE );
 }
 
 /* FIXME: review them because vlc_event_send might be
@@ -167,7 +179,7 @@ void input_SendEventMeta( input_thread_t *p_input )
 
        event.type = vlc_InputItemMetaChanged;
        event.u.input_item_meta_changed.meta_type = vlc_meta_ArtworkURL;
-       vlc_event_send( &p_input->p->input.p_item->event_manager, &event );
+       vlc_event_send( &p_input->p->p_item->event_manager, &event );
 }
 
 void input_SendEventMetaInfo( input_thread_t *p_input )
@@ -178,7 +190,7 @@ void input_SendEventMetaInfo( input_thread_t *p_input )
     vlc_event_t event;
 
     event.type = vlc_InputItemInfoChanged;
-    vlc_event_send( &p_input->p->input.p_item->event_manager, &event );
+    vlc_event_send( &p_input->p->p_item->event_manager, &event );
 }
 
 void input_SendEventMetaName( input_thread_t *p_input, const char *psz_name )
@@ -190,7 +202,7 @@ void input_SendEventMetaName( input_thread_t *p_input, const char *psz_name )
 
     event.type = vlc_InputItemNameChanged;
     event.u.input_item_name_changed.new_name = psz_name;
-    vlc_event_send( &p_input->p->input.p_item->event_manager, &event );
+    vlc_event_send( &p_input->p->p_item->event_manager, &event );
 }
 
 /*****************************************************************************
@@ -246,6 +258,9 @@ void input_SendEventEsDel( input_thread_t *p_input, int i_cat, int i_id )
 {
     vlc_value_t val;
 
+    if( i_cat == UNKNOWN_ES )
+        return;
+
     if( i_id >= 0 )
     {
         val.i_int = i_id;
@@ -263,6 +278,9 @@ void input_SendEventEsAdd( input_thread_t *p_input, int i_cat, int i_id, const c
     vlc_value_t val;
     vlc_value_t text;
 
+    if( i_cat == UNKNOWN_ES )
+        return;
+
     val.i_int = i_id;
     text.psz_string = (char*)psz_text;
 
@@ -277,15 +295,23 @@ void input_SendEventEsSelect( input_thread_t *p_input, int i_cat, int i_id )
 {
     vlc_value_t val;
 
+    if( i_cat == UNKNOWN_ES )
+        return;
+
     val.i_int = i_id;
     var_Change( p_input, GetEsVarName( i_cat ), VLC_VAR_SETVALUE, &val, NULL );
 
     Trigger( p_input, INPUT_EVENT_ES );
+}
 
-    /* FIXME to remove this ugliness */
-    vlc_event_t event;
-    event.type = vlc_InputSelectedStreamChanged;
-    vlc_event_send( &p_input->p->event_manager, &event );
+void input_SendEventTeletext( input_thread_t *p_input, int i_id )
+{
+    vlc_value_t val;
+
+    val.i_int = i_id;
+    var_Change( p_input, "teletext-es", VLC_VAR_SETVALUE, &val, NULL );
+
+    Trigger( p_input, INPUT_EVENT_TELETEXT );
 }
 
 void input_SendEventVout( input_thread_t *p_input )
@@ -293,6 +319,19 @@ void input_SendEventVout( input_thread_t *p_input )
     Trigger( p_input, INPUT_EVENT_VOUT );
 }
 
+void input_SendEventAout( input_thread_t *p_input )
+{
+    Trigger( p_input, INPUT_EVENT_AOUT );
+}
+
+/*****************************************************************************
+ * Event for control.c/input.c
+ *****************************************************************************/
+void input_SendEventBookmark( input_thread_t *p_input )
+{
+    Trigger( p_input, INPUT_EVENT_BOOKMARK );
+}
+
 /*****************************************************************************
  *
  *****************************************************************************/