From 8d2392e36cc5b2505c2dd0aa33ab27bf45d80b5f Mon Sep 17 00:00:00 2001 From: Brad Parker Date: Sat, 29 Jun 2019 15:39:26 -0400 Subject: [PATCH] cdrom: use correct seek function --- libretro-common/vfs/vfs_implementation.c | 29 ++++++++++++++++-------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/libretro-common/vfs/vfs_implementation.c b/libretro-common/vfs/vfs_implementation.c index 8b4fb1cb36..69b605a7eb 100644 --- a/libretro-common/vfs/vfs_implementation.c +++ b/libretro-common/vfs/vfs_implementation.c @@ -490,12 +490,24 @@ libretro_vfs_implementation_file *retro_vfs_file_open_impl( stream->size = orbisLseek(stream->fd, 0, SEEK_END); orbisLseek(stream->fd, 0, SEEK_SET); #else - retro_vfs_file_seek_internal(stream, 0, SEEK_SET); - retro_vfs_file_seek_internal(stream, 0, SEEK_END); + if (stream->scheme == VFS_SCHEME_CDROM) + { + retro_vfs_file_seek_cdrom(stream, 0, SEEK_SET); + retro_vfs_file_seek_cdrom(stream, 0, SEEK_END); - stream->size = retro_vfs_file_tell_impl(stream); + stream->size = retro_vfs_file_tell_impl(stream); - retro_vfs_file_seek_internal(stream, 0, SEEK_SET); + retro_vfs_file_seek_cdrom(stream, 0, SEEK_SET); + } + else + { + retro_vfs_file_seek_internal(stream, 0, SEEK_SET); + retro_vfs_file_seek_internal(stream, 0, SEEK_END); + + stream->size = retro_vfs_file_tell_impl(stream); + + retro_vfs_file_seek_internal(stream, 0, SEEK_SET); + } #endif return stream; @@ -600,6 +612,10 @@ int64_t retro_vfs_file_tell_impl(libretro_vfs_implementation_file *stream) if ((stream->hints & RFILE_HINT_UNBUFFERED) == 0) { +#ifdef HAVE_CDROM + if (stream->scheme == VFS_SCHEME_CDROM) + return retro_vfs_file_tell_cdrom(stream); +#endif #ifdef ORBIS int64_t ret = orbisLseek(stream->fd, 0, SEEK_CUR); if (ret < 0) @@ -610,11 +626,6 @@ int64_t retro_vfs_file_tell_impl(libretro_vfs_implementation_file *stream) #ifdef ATLEAST_VC2005 return _ftelli64(stream->fp); #else -#ifdef HAVE_CDROM - if (stream->scheme == VFS_SCHEME_CDROM) - return retro_vfs_file_tell_cdrom(stream); - else -#endif return ftell(stream->fp); #endif #endif