]> git.sesse.net Git - vlc/blobdiff - modules/access/dvdread.c
Add a check for i_card_index < 0.
[vlc] / modules / access / dvdread.c
index 4eef5d82ed913b2695b34d740cebcaf75c3fabdc..e703abc315ef1758e609aa52f7171383826a99bb 100644 (file)
 
 #include <sys/types.h>
 
-#ifdef HAVE_DVDREAD_DVD_READER_H
-  #include <dvdread/dvd_reader.h>
-  #include <dvdread/ifo_types.h>
-  #include <dvdread/ifo_read.h>
-  #include <dvdread/nav_read.h>
-  #include <dvdread/nav_print.h>
-#else
-  #include <libdvdread/dvd_reader.h>
-  #include <libdvdread/ifo_types.h>
-  #include <libdvdread/ifo_read.h>
-  #include <libdvdread/nav_read.h>
-  #include <libdvdread/nav_print.h>
-#endif
+#include <dvdread/dvd_reader.h>
+#include <dvdread/ifo_types.h>
+#include <dvdread/ifo_read.h>
+#include <dvdread/nav_read.h>
+#include <dvdread/nav_print.h>
 
 #include <assert.h>
 
@@ -90,9 +82,7 @@ vlc_module_begin ()
         CACHING_TEXT, CACHING_LONGTEXT, true )
     add_obsolete_string( "dvdread-css-method" ) /* obsolete since 1.1.0 */
     set_capability( "access_demux", 0 )
-    add_shortcut( "dvd" )
-    add_shortcut( "dvdread" )
-    add_shortcut( "dvdsimple" )
+    add_shortcut( "dvd", "dvdread", "dvdsimple" )
     set_callbacks( Open, Close )
 vlc_module_end ()
 
@@ -178,7 +168,7 @@ static int Open( vlc_object_t *p_this )
     dvd_reader_t *p_dvdread;
     ifo_handle_t *p_vmg_file;
 
-    if( !p_demux->psz_path || !*p_demux->psz_path )
+    if( !p_demux->psz_file || !*p_demux->psz_file )
     {
         /* Only when selected */
         if( !p_demux->psz_access || !*p_demux->psz_access )
@@ -191,7 +181,7 @@ static int Open( vlc_object_t *p_this )
         }
     }
     else
-        psz_name = ToLocaleDup( p_demux->psz_path );
+        psz_name = ToLocaleDup( p_demux->psz_file );
 
 #ifdef WIN32
     if( psz_name[0] && psz_name[1] == ':' &&
@@ -273,6 +263,11 @@ static void Close( vlc_object_t *p_this )
         }
     }
 
+    /* Free the array of titles */
+    for( int i = 0; i < p_sys->i_titles; i++ )
+        vlc_input_title_Delete( p_sys->titles[i] );
+    TAB_CLEAN( p_sys->i_titles, p_sys->titles );
+
     /* Close libdvdread */
     if( p_sys->p_title ) DVDCloseFile( p_sys->p_title );
     if( p_sys->p_vts_file ) ifoClose( p_sys->p_vts_file );
@@ -428,7 +423,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
 
         case DEMUX_GET_PTS_DELAY:
             pi64 = (int64_t*)va_arg( args, int64_t * );
-            *pi64 = (int64_t)var_GetInteger( p_demux, "dvdread-caching" )*1000;
+            *pi64 = var_GetInteger( p_demux, "dvdread-caching" )*1000;
             return VLC_SUCCESS;
 
         /* TODO implement others */