diff --git a/src/sound/music.cpp b/src/sound/music.cpp index 35a708d8c..b480d37ed 100644 --- a/src/sound/music.cpp +++ b/src/sound/music.cpp @@ -368,61 +368,53 @@ global int PlayCDRom(int name) ** ** @return True if name is handled by the cdrom module. */ -local int PlayCDRom(const char* name) +global int PlayCDRom(int name) { int i; Sample *sample; if (CDMode == CDModeOff) { - if (!strncmp(name, ":", 1)) { - CDDrive = open("/dev/cdrom", O_RDONLY | O_NONBLOCK); - ioctl(CDDrive, CDROMRESET); + CDDrive = open("/dev/cdrom", O_RDONLY | O_NONBLOCK); + ioctl(CDDrive, CDROMRESET); - ioctl(CDDrive, CDROMREADTOCHDR, &CDchdr); + ioctl(CDDrive, CDROMREADTOCHDR, &CDchdr); - for (i = CDchdr.cdth_trk0; i <= CDchdr.cdth_trk1; ++i){ - CDtocentry[i].cdte_format = CDROM_LBA; - CDtocentry[i].cdte_track = i; - ioctl(CDDrive, CDROMREADTOCENTRY, &CDtocentry[i]); - } - NumCDTracks = i - 1; + for (i = CDchdr.cdth_trk0; i <= CDchdr.cdth_trk1; ++i){ + CDtocentry[i].cdte_format = CDROM_LBA; + CDtocentry[i].cdte_track = i; + ioctl(CDDrive, CDROMREADTOCENTRY, &CDtocentry[i]); + } + NumCDTracks = i - 1; - if (NumCDTracks == 0) { - CDMode = CDModeOff; - return 1; - } + if (NumCDTracks == 0) { + CDMode = CDModeOff; + return 1; } } - if (!strncmp(name, ":", 1)) { + StopMusic(); - StopMusic(); - - // if mode is play all tracks - if (!strcmp(name, ":all")) { - CDMode = CDModeAll; - do { - if (CDTrack >= NumCDTracks) { - CDTrack = 0; - } - } while (CDtocentry[++CDTrack].cdte_ctrl&CDROM_DATA_TRACK); - } - // if mode is play random tracks - if (!strcmp(name, ":random")) { - CDMode = CDModeRanom; - do { - CDTrack = MyRand() % NumCDTracks; - } while (CDtocentry[CDTrack].cdte_ctrl&CDROM_DATA_TRACK); - } - - sample = LoadCD(NULL, CDTrack); - MusicSample = sample; - PlayingMusic = 1; - return 1; + // if mode is play all tracks + if (name == CDModeAll) { + CDMode = CDModeAll; + do { + if (CDTrack >= NumCDTracks) { + CDTrack = 0; + } + } while (CDtocentry[++CDTrack].cdte_ctrl&CDROM_DATA_TRACK); + } + // if mode is play random tracks + if (name == CDModeRandom) { + CDMode = CDModeRandom; + do { + CDTrack = MyRand() % NumCDTracks; + } while (CDtocentry[CDTrack].cdte_ctrl&CDROM_DATA_TRACK); } - return 0; - + sample = LoadCD(NULL, CDTrack); + MusicSample = sample; + PlayingMusic = 1; + return 1; } #endif diff --git a/src/sound/sound_server.cpp b/src/sound/sound_server.cpp index 72d4b5fbc..869a8e57e 100644 --- a/src/sound/sound_server.cpp +++ b/src/sound/sound_server.cpp @@ -255,13 +255,13 @@ global int CDRomCheck(void *unused __attribute__ ((unused))) } } #elif defined(USE_CDDA) - if (CDMode != CDModeOff && CDMode != CDModeStopped) + if (CDMode != CDModeOff && CDMode != CDModeStopped && !PlayingMusic) { DebugLevel0Fn("Playing new track\n"); if (CDMode == CDModeAll) { - PlayCDRom(":all"); + PlayCDRom(CDModeAll); } else if (CDMode == CDModeRandom) { - PlayCDRom(":random"); + PlayCDRom(CDModeRandom); } } #endif