-static inline 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 );
-}