diff --git a/libmpdemux/open.c b/libmpdemux/open.c index fc5294f11f..5fa7a316b2 100644 --- a/libmpdemux/open.c +++ b/libmpdemux/open.c @@ -686,4 +686,11 @@ d->angle_seek=1; } +void dvd_close(dvd_priv_t *d) { + ifoClose(d->vts_file); + ifoClose(d->vmg_file); + DVDCloseFile(d->title); + DVDClose(d->dvd); +} + #endif diff --git a/libmpdemux/stream.c b/libmpdemux/stream.c index 86d2ffa3d1..5d96414a7c 100644 --- a/libmpdemux/stream.c +++ b/libmpdemux/stream.c @@ -278,10 +278,17 @@ void free_stream(stream_t *s){ waitpid(s->cache_pid,NULL,0); } if(s->fd>0) close(s->fd); + switch(s->type) { #ifdef HAVE_CDDA - if(s->type == STREAMTYPE_CDDA) + case STREAMTYPE_CDDA: close_cdda(s); + break; #endif +#ifdef USE_DVDREAD + case STREAMTYPE_DVD: + dvd_close(s->priv); +#endif + } if(s->priv) free(s->priv); free(s); }