Mercurial > libdvdnav.hg
diff vm.c @ 4:99bed5d6db2f src
Added reset patch from Kees Cook <kees@outflux.net>
author | richwareham |
---|---|
date | Tue, 02 Apr 2002 18:22:27 +0000 |
parents | 328eadb3f37e |
children | 5f319e02e333 |
line wrap: on
line diff
--- a/vm.c Mon Apr 01 18:56:28 2002 +0000 +++ b/vm.c Tue Apr 02 18:22:27 2002 +0000 @@ -115,14 +115,17 @@ if(self->vmgi) { ifoClose(self->vmgi); + self->vmgi=NULL; } if(self->vtsi) { ifoClose(self->vtsi); + self->vmgi=NULL; } if(self->dvd) { DVDClose(self->dvd); + self->dvd=NULL; } } @@ -193,42 +196,49 @@ (self->state).vtsN = -1; - self->dvd = DVDOpen(dvdroot); - if(!self->dvd) { - fprintf(stderr, "vm: faild to open/read the DVD\n"); - return -1; - } - - self->vmgi = ifoOpenVMGI(self->dvd); - if(!self->vmgi) { - fprintf(stderr, "vm: faild to read VIDEO_TS.IFO\n"); - return -1; - } - if(!ifoRead_FP_PGC(self->vmgi)) { - fprintf(stderr, "vm: ifoRead_FP_PGC failed\n"); - return -1; + if (self->dvd && dvdroot) { + // a new dvd device has been requested + vm_stop(self); } - if(!ifoRead_TT_SRPT(self->vmgi)) { - fprintf(stderr, "vm: ifoRead_TT_SRPT failed\n"); - return -1; - } - if(!ifoRead_PGCI_UT(self->vmgi)) { - fprintf(stderr, "vm: ifoRead_PGCI_UT failed\n"); - return -1; + if (!self->dvd) { + self->dvd = DVDOpen(dvdroot); + if(!self->dvd) { + fprintf(stderr, "vm: faild to open/read the DVD\n"); + return -1; + } + + self->vmgi = ifoOpenVMGI(self->dvd); + if(!self->vmgi) { + fprintf(stderr, "vm: faild to read VIDEO_TS.IFO\n"); + return -1; + } + if(!ifoRead_FP_PGC(self->vmgi)) { + fprintf(stderr, "vm: ifoRead_FP_PGC failed\n"); + return -1; + } + if(!ifoRead_TT_SRPT(self->vmgi)) { + fprintf(stderr, "vm: ifoRead_TT_SRPT failed\n"); + return -1; + } + if(!ifoRead_PGCI_UT(self->vmgi)) { + fprintf(stderr, "vm: ifoRead_PGCI_UT failed\n"); + return -1; + } + if(!ifoRead_PTL_MAIT(self->vmgi)) { + fprintf(stderr, "vm: ifoRead_PTL_MAIT failed\n"); + ; /* return -1; Not really used for now.. */ + } + if(!ifoRead_VTS_ATRT(self->vmgi)) { + fprintf(stderr, "vm: ifoRead_VTS_ATRT failed\n"); + ; /* return -1; Not really used for now.. */ + } + if(!ifoRead_VOBU_ADMAP(self->vmgi)) { + fprintf(stderr, "vm: ifoRead_VOBU_ADMAP vgmi failed\n"); + ; /* return -1; Not really used for now.. */ + } + /* ifoRead_TXTDT_MGI(vmgi); Not implemented yet */ } - if(!ifoRead_PTL_MAIT(self->vmgi)) { - fprintf(stderr, "vm: ifoRead_PTL_MAIT failed\n"); - ; /* return -1; Not really used for now.. */ - } - if(!ifoRead_VTS_ATRT(self->vmgi)) { - fprintf(stderr, "vm: ifoRead_VTS_ATRT failed\n"); - ; /* return -1; Not really used for now.. */ - } - if(!ifoRead_VOBU_ADMAP(self->vmgi)) { - fprintf(stderr, "vm: ifoRead_VOBU_ADMAP vgmi failed\n"); - ; /* return -1; Not really used for now.. */ - } - /* ifoRead_TXTDT_MGI(vmgi); Not implemented yet */ + else fprintf(stderr, "vm: reset\n"); return 0; } @@ -1522,6 +1532,9 @@ /* * $Log$ + * Revision 1.3 2002/04/02 18:22:27 richwareham + * Added reset patch from Kees Cook <kees@outflux.net> + * * Revision 1.2 2002/04/01 18:56:28 richwareham * Added initial example programs directory and make sure all debug/error output goes to stderr. *