From 09bbc47f3da52aad1111b42eceaa2973a5c440da Mon Sep 17 00:00:00 2001 From: rocky Date: Mon, 20 Oct 2003 04:29:17 +0000 Subject: [PATCH] Retry YellowMode2 if XA fails - but I think we need a better overall method. --- lib/_cdio_win32.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/lib/_cdio_win32.c b/lib/_cdio_win32.c index c2972d1c..61304f3e 100644 --- a/lib/_cdio_win32.c +++ b/lib/_cdio_win32.c @@ -1,5 +1,5 @@ /* - $Id: _cdio_win32.c,v 1.19 2003/10/18 19:49:00 rocky Exp $ + $Id: _cdio_win32.c,v 1.20 2003/10/20 04:29:17 rocky Exp $ Copyright (C) 2003 Rocky Bernstein @@ -26,7 +26,7 @@ # include "config.h" #endif -static const char _rcsid[] = "$Id: _cdio_win32.c,v 1.19 2003/10/18 19:49:00 rocky Exp $"; +static const char _rcsid[] = "$Id: _cdio_win32.c,v 1.20 2003/10/20 04:29:17 rocky Exp $"; #include #include @@ -612,8 +612,17 @@ _cdio_mmc_read_sectors (void *user_data, void *data, lsn_t lsn, sizeof(RAW_READ_INFO), buf, sizeof(buf), &dwBytesReturned, NULL ) == 0 ) { + /* Retry in Yellowmode2 */ + cdrom_raw.TrackMode = YellowMode2; + if( DeviceIoControl( _obj->h_device_handle, + IOCTL_CDROM_RAW_READ, &cdrom_raw, + sizeof(RAW_READ_INFO), buf, + sizeof(buf), &dwBytesReturned, NULL ) + == 0 ) { + cdio_info("Error reading %lu (%ld)\n", lsn, GetLastError()); return 1; } + } } /* FIXME! remove the 8 (SUBHEADER size) below... */ @@ -677,9 +686,17 @@ _cdio_read_mode2_sector (void *user_data, void *data, lsn_t lsn, sizeof(RAW_READ_INFO), buf, sizeof(buf), &dwBytesReturned, NULL ) == 0 ) { - cdio_debug("Error reading %lu\n", lsn); - return 1; + /* Retry in Yellowmode2 */ + cdrom_raw.TrackMode = YellowMode2; + if( DeviceIoControl( _obj->h_device_handle, + IOCTL_CDROM_RAW_READ, &cdrom_raw, + sizeof(RAW_READ_INFO), buf, + sizeof(buf), &dwBytesReturned, NULL ) + == 0 ) { + cdio_info("Error reading %lu (%ld)\n", lsn, GetLastError()); + return 1; } + } ret = 0; }