From db488c4f1ffa04a5e6d17092a3890a78d35c3431 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 30 Sep 2001 19:07:56 +0000 Subject: [PATCH] Fixed last track time calculation (thanks Tchi Southivong) --- src/cdrom/win32/SDL_syscdrom.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/cdrom/win32/SDL_syscdrom.c b/src/cdrom/win32/SDL_syscdrom.c index 5a0806e4f..929e421e3 100644 --- a/src/cdrom/win32/SDL_syscdrom.c +++ b/src/cdrom/win32/SDL_syscdrom.c @@ -215,18 +215,19 @@ static int SDL_SYS_CDGetTOC(SDL_CD *cdrom) } } if ( i == cdrom->numtracks ) { - flags &= ~MCI_TRACK; + mci_status.dwTrack = cdrom->track[i - 1].id; mci_status.dwItem = MCI_STATUS_LENGTH; if ( SDL_SYS_CDioctl(cdrom->id, MCI_STATUS, flags, &mci_status) == 0 ) { - cdrom->track[i].offset = MSF_TO_FRAMES( + cdrom->track[i - 1].length = MSF_TO_FRAMES( MCI_MSF_MINUTE(mci_status.dwReturn), MCI_MSF_SECOND(mci_status.dwReturn), - MCI_MSF_FRAME(mci_status.dwReturn)); + MCI_MSF_FRAME(mci_status.dwReturn)) + 1; /* +1 to fix */ + /* MCI last track length bug */ + /* compute lead-out offset */ + cdrom->track[i].offset = cdrom->track[i - 1].offset + + cdrom->track[i - 1].length; cdrom->track[i].length = 0; - cdrom->track[i-1].length = - cdrom->track[i].offset- - cdrom->track[i-1].offset; okay = 1; } }