Cosmetics.
[vlc.git] / src / input / input.c
index 9371a0c..bb15c4a 100644 (file)
@@ -1398,6 +1398,37 @@ static void End( input_thread_t * p_input )
 /*****************************************************************************
  * Control
  *****************************************************************************/
 /*****************************************************************************
  * Control
  *****************************************************************************/
+void input_ControlPush( input_thread_t *p_input,
+                        int i_type, vlc_value_t *p_val )
+{
+    vlc_mutex_lock( &p_input->p->lock_control );
+    if( i_type == INPUT_CONTROL_SET_DIE )
+    {
+        /* Special case, empty the control */
+        p_input->p->i_control = 1;
+        p_input->p->control[0].i_type = i_type;
+        memset( &p_input->p->control[0].val, 0, sizeof( vlc_value_t ) );
+    }
+    else if( p_input->p->i_control >= INPUT_CONTROL_FIFO_SIZE )
+    {
+        msg_Err( p_input, "input control fifo overflow, trashing type=%d",
+                 i_type );
+    }
+    else
+    {
+        p_input->p->control[p_input->p->i_control].i_type = i_type;
+        if( p_val )
+            p_input->p->control[p_input->p->i_control].val = *p_val;
+        else
+            memset( &p_input->p->control[p_input->p->i_control].val, 0,
+                    sizeof( vlc_value_t ) );
+
+        p_input->p->i_control++;
+    }
+    vlc_cond_signal( &p_input->p->wait_control );
+    vlc_mutex_unlock( &p_input->p->lock_control );
+}
+
 static inline int ControlPopNoLock( input_thread_t *p_input,
                                     int *pi_type, vlc_value_t *p_val,
                                     mtime_t i_deadline )
 static inline int ControlPopNoLock( input_thread_t *p_input,
                                     int *pi_type, vlc_value_t *p_val,
                                     mtime_t i_deadline )