]> git.sesse.net Git - vlc/commitdiff
* ./src/vlc.c, ./src/libvlc.c: added more robust consistency checks.
authorSam Hocevar <sam@videolan.org>
Thu, 18 Jul 2002 01:00:41 +0000 (01:00 +0000)
committerSam Hocevar <sam@videolan.org>
Thu, 18 Jul 2002 01:00:41 +0000 (01:00 +0000)
src/libvlc.c
src/vlc.c

index 804a9e47f1b3a981cb8dae73d4d7238b6cd5efc2..3bdf946f4c2b390a69a5b2a39395cb99d2217a19 100644 (file)
@@ -4,7 +4,7 @@
  * and spawns threads.
  *****************************************************************************
  * Copyright (C) 1998-2001 VideoLAN
- * $Id: libvlc.c,v 1.15 2002/07/16 21:29:10 sam Exp $
+ * $Id: libvlc.c,v 1.16 2002/07/18 01:00:41 sam Exp $
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -186,7 +186,7 @@ vlc_error_t vlc_init( vlc_t *p_vlc, int i_argc, char *ppsz_argv[] )
     /* Check that the handle is valid */
     if( !p_vlc || p_vlc->i_status != VLC_STATUS_CREATED )
     {
-        fprintf( stderr, "error: invalid status\n" );
+        fprintf( stderr, "error: invalid status (!CREATED)\n" );
         return VLC_ESTATUS;
     }
 
@@ -480,12 +480,6 @@ vlc_error_t vlc_init( vlc_t *p_vlc, int i_argc, char *ppsz_argv[] )
         config_PutInt( p_vlc, "network-channel", VLC_FALSE );
     }
 
-    /* Update the handle status */
-    p_vlc->i_status = VLC_STATUS_STOPPED;
-
-/* XXX XXX XXX XXX XXX XXX XXX XXX */
-/* XXX XXX XXX XXX XXX XXX XXX XXX */
-/* XXX XXX XXX XXX XXX XXX XXX XXX */
     /*
      * Initialize playlist and get commandline files
      */
@@ -493,18 +487,22 @@ vlc_error_t vlc_init( vlc_t *p_vlc, int i_argc, char *ppsz_argv[] )
     if( !p_playlist )
     {
         msg_Err( p_vlc, "playlist initialization failed" );
+        if( p_vlc->p_memcpy_module != NULL )
+        {
+            module_Unneed( p_vlc->p_memcpy_module );
+        }
         module_EndBank( p_vlc );
         msg_Destroy( p_vlc );
         return VLC_EGENERIC;
     }
 
+    /* Update the handle status */
+    p_vlc->i_status = VLC_STATUS_STOPPED;
+
     /*
      * Get input filenames given as commandline arguments
      */
     GetFilenames( p_vlc, i_argc, ppsz_argv );
-/* XXX XXX XXX XXX XXX XXX XXX XXX */
-/* XXX XXX XXX XXX XXX XXX XXX XXX */
-/* XXX XXX XXX XXX XXX XXX XXX XXX */
 
     return VLC_SUCCESS;
 }
@@ -522,7 +520,7 @@ vlc_error_t vlc_run( vlc_t *p_vlc )
     /* Check that the handle is valid */
     if( !p_vlc || p_vlc->i_status != VLC_STATUS_STOPPED )
     {
-        fprintf( stderr, "error: invalid status\n" );
+        fprintf( stderr, "error: invalid status (!STOPPED)\n" );
         return VLC_ESTATUS;
     }
 
@@ -550,7 +548,7 @@ vlc_error_t vlc_add_intf( vlc_t *p_vlc, const char *psz_module,
     /* Check that the handle is valid */
     if( !p_vlc || p_vlc->i_status != VLC_STATUS_RUNNING )
     {
-        fprintf( stderr, "error: invalid status\n" );
+        fprintf( stderr, "error: invalid status (!RUNNING)\n" );
         return VLC_ESTATUS;
     }
 
@@ -583,6 +581,7 @@ vlc_error_t vlc_add_intf( vlc_t *p_vlc, const char *psz_module,
     err = intf_RunThread( p_intf );
     if( err )
     {
+        vlc_object_detach_all( p_intf );
         intf_Destroy( p_intf );
         return err;
     }
@@ -606,7 +605,7 @@ vlc_error_t vlc_stop( vlc_t *p_vlc )
     /* Check that the handle is valid */
     if( !p_vlc || p_vlc->i_status != VLC_STATUS_RUNNING )
     {
-        fprintf( stderr, "error: invalid status\n" );
+        fprintf( stderr, "error: invalid status (!RUNNING)\n" );
         return VLC_ESTATUS;
     }
 
@@ -673,7 +672,7 @@ vlc_error_t vlc_end( vlc_t *p_vlc )
     /* Check that the handle is valid */
     if( !p_vlc || p_vlc->i_status != VLC_STATUS_STOPPED )
     {
-        fprintf( stderr, "error: invalid status\n" );
+        fprintf( stderr, "error: invalid status (!STOPPED)\n" );
         return VLC_ESTATUS;
     }
 
@@ -728,7 +727,7 @@ vlc_error_t vlc_destroy( vlc_t *p_vlc )
     /* Check that the handle is valid */
     if( !p_vlc || p_vlc->i_status != VLC_STATUS_CREATED )
     {
-        fprintf( stderr, "error: invalid status\n" );
+        fprintf( stderr, "error: invalid status (!CREATED)\n" );
         return VLC_ESTATUS;
     }
 
@@ -802,7 +801,7 @@ vlc_error_t vlc_add_target( vlc_t *p_vlc, const char *psz_target,
     if( !p_vlc || ( p_vlc->i_status != VLC_STATUS_STOPPED
                      && p_vlc->i_status != VLC_STATUS_RUNNING ) )
     {
-        fprintf( stderr, "error: invalid status\n" );
+        fprintf( stderr, "error: invalid status (!STOPPED&&!RUNNING)\n" );
         return VLC_ESTATUS;
     }
 
index 6ab32ab2c897184983561e622f17d07a68d081cf..d3aa00332f25499e1c538ed80f46de02262b7469 100644 (file)
--- a/src/vlc.c
+++ b/src/vlc.c
@@ -2,7 +2,7 @@
  * vlc.c: the vlc player
  *****************************************************************************
  * Copyright (C) 1998-2001 VideoLAN
- * $Id: vlc.c,v 1.4 2002/07/11 18:44:12 sam Exp $
+ * $Id: vlc.c,v 1.5 2002/07/18 01:00:41 sam Exp $
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -75,14 +75,8 @@ int main(int i_argc, char *ppsz_argv[], char *ppsz_env[])
     //vlc_add_intf( p_vlc, "kde", VLC_FALSE );
     vlc_add_intf( p_vlc, "rc", VLC_FALSE );
 
-    /* Add a blocking interface */
+    /* Add a blocking interface and keep the return value */
     err = vlc_add_intf( p_vlc, NULL, VLC_TRUE );
-    if( err != VLC_SUCCESS )
-    {
-        vlc_end( p_vlc );
-        vlc_destroy( p_vlc );
-        return err;
-    }
 
     /* Finish the interface */
     vlc_stop( p_vlc );
@@ -93,6 +87,6 @@ int main(int i_argc, char *ppsz_argv[], char *ppsz_env[])
     /* Destroy the vlc structure */
     vlc_destroy( p_vlc );
 
-    return 0;
+    return err;
 }