vlc_mutex_init( &p_input->p->lock_control );
vlc_cond_init( &p_input->p->wait_control );
p_input->p->i_control = 0;
+ p_input->p->b_abort = false;
/* Parse input options */
vlc_mutex_lock( &p_item->lock );
* unlock the control loop */
ObjectKillChildrens( p_input, VLC_OBJECT(p_input) );
+ vlc_mutex_lock( &p_input->p->lock_control );
+ p_input->p->b_abort |= b_abort;
+ vlc_mutex_unlock( &p_input->p->lock_control );
+
input_ControlPush( p_input, INPUT_CONTROL_SET_DIE, NULL );
- if( b_abort )
- input_SendEventAbort( p_input );
}
input_resource_t *input_DetachResource( input_thread_t *p_input )
exit:
/* Tell we're dead */
+ if( p_input->p->b_abort )
+ input_SendEventAbort( p_input );
input_SendEventDead( p_input );
+
vlc_restorecancel( canc );
return NULL;
}