input: end immediately, do not wait for kill event
authorRémi Denis-Courmont <rdenis@simphalempin.com>
Mon, 12 Jan 2009 19:27:17 +0000 (21:27 +0200)
committerRémi Denis-Courmont <rdenis@simphalempin.com>
Mon, 12 Jan 2009 19:35:15 +0000 (21:35 +0200)
Once the input main loop is done (or if input init fails), input
controls are not popped anyway. So the input callbacks are no-ops.
There is no point in postponing cleanup.

src/input/input.c

index cbd363a..d33b682 100644 (file)
@@ -68,7 +68,6 @@ static  void *RunAndDestroy  ( vlc_object_t *p_this );
 static input_thread_t * Create  ( vlc_object_t *, input_item_t *,
                                   const char *, bool, input_ressource_t * );
 static  int             Init    ( input_thread_t *p_input );
-static void             WaitDie   ( input_thread_t *p_input );
 static void             End     ( input_thread_t *p_input );
 static void             MainLoop( input_thread_t *p_input );
 
@@ -517,18 +516,14 @@ static void *Run( vlc_object_t *p_this )
 
     if( Init( p_input ) )
     {
-        /* If we failed, wait before we are killed, and exit */
-        WaitDie( p_input );
+        input_ChangeState( p_input, p_input->b_error ? ERROR_S : END_S );
         goto exit;
     }
 
     MainLoop( p_input );
 
-    /* Wait until we are asked to die */
-    if( !p_input->b_die )
-        WaitDie( p_input );
-
     /* Clean up */
+    input_ChangeState( p_input, p_input->b_error ? ERROR_S : END_S );
     End( p_input );
 
 exit:
@@ -1283,22 +1278,6 @@ error:
     return VLC_EGENERIC;
 }
 
-/*****************************************************************************
- * WaitDie: Wait until we are asked to die.
- *****************************************************************************
- * This function is called when an error occurred during thread main's loop.
- *****************************************************************************/
-static void WaitDie( input_thread_t *p_input )
-{
-    input_ChangeState( p_input, p_input->b_error ? ERROR_S : END_S );
-
-    /* Wait a die order */
-    vlc_object_lock( p_input );
-    while( vlc_object_alive( p_input ) )
-        vlc_object_wait( p_input );
-    vlc_object_unlock( p_input );
-}
-
 /*****************************************************************************
  * End: end the input thread
  *****************************************************************************/