summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSteven Fuller <relnev@icculus.org>2001-12-19 21:42:15 +0000
committerPatryk Obara <dreamer.tan@gmail.com>2019-08-20 02:22:37 +0200
commit0677653d4f82a2a913986841001847a3c63d25f8 (patch)
tree824eee6814d5b7d1384876dcdb89eda313f265f7 /src
parent080430b3bda2bec05362119447d51b6c37f1cfc1 (diff)
CDDA_Play now searches for a cd audio track if the requested one is not
valid.
Diffstat (limited to 'src')
-rw-r--r--src/cdplayer.c21
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)