diff options
| author | Steven Fuller <relnev@icculus.org> | 2001-12-19 21:42:15 +0000 |
|---|---|---|
| committer | Patryk Obara <dreamer.tan@gmail.com> | 2019-08-20 02:22:37 +0200 |
| commit | 0677653d4f82a2a913986841001847a3c63d25f8 (patch) | |
| tree | 824eee6814d5b7d1384876dcdb89eda313f265f7 | |
| parent | 080430b3bda2bec05362119447d51b6c37f1cfc1 (diff) | |
CDDA_Play now searches for a cd audio track if the requested one is not
valid.
| -rw-r--r-- | src/cdplayer.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/cdplayer.c b/src/cdplayer.c index 953e988..53fcb7c 100644 --- a/src/cdplayer.c +++ b/src/cdplayer.c @@ -108,8 +108,25 @@ void CDDA_Play(int CDDATrack) if (cdrom == NULL) return; - if (CD_INDRIVE(SDL_CDStatus(cdrom))) - SDL_CDPlayTracks(cdrom, CDDATrack-1, 0, 1, 0); + if (CD_INDRIVE(SDL_CDStatus(cdrom))) { + int track = CDDATrack - 1; + int i; + + if (cdrom->numtracks == 0) + return; + + track %= cdrom->numtracks; + + for (i = 0; i < cdrom->numtracks; i++) { + if (cdrom->track[track].type == SDL_AUDIO_TRACK) { + SDL_CDPlayTracks(cdrom, track, 0, 1, 0); + return; + } + + track++; + track %= cdrom->numtracks; + } + } } void CDDA_PlayLoop(int CDDATrack) |
