diff --git a/src/sound/music.cpp b/src/sound/music.cpp index b480d37ed..cf39e7e71 100644 --- a/src/sound/music.cpp +++ b/src/sound/music.cpp @@ -242,6 +242,11 @@ local Sample* LoadMod(const char* name,int flags __attribute__((unused))) */ global int PlayCDRom(int name) { + if (name == CDModeOff) { + CDMode = CDModeOff; + return 1; + } + // Old mode off, starting cdrom play. if (CDMode == CDModeOff) { if (SDL_Init(SDL_INIT_CDROM) < 0) { @@ -298,6 +303,11 @@ global int PlayCDRom(int name) int i; int data_cd; + if (name == CDModeOff) { + CDMode = CDModeOff; + return 1; + } + if (CDMode == CDModeOff) { if (cd_init()) { fprintf(stderr, "Error initialising libcda \n"); @@ -373,6 +383,11 @@ global int PlayCDRom(int name) int i; Sample *sample; + if (name == CDModeOff) { + CDMode = CDModeOff; + return 1; + } + if (CDMode == CDModeOff) { CDDrive = open("/dev/cdrom", O_RDONLY | O_NONBLOCK); ioctl(CDDrive, CDROMRESET); diff --git a/src/sound/script_sound.cpp b/src/sound/script_sound.cpp index ddaa5119d..a884f4a80 100644 --- a/src/sound/script_sound.cpp +++ b/src/sound/script_sound.cpp @@ -384,6 +384,8 @@ local SCM CclSetCdMode(SCM mode) cdmode=CDModeRandom; } else if( gh_eq_p(mode,gh_symbol2scm("defined")) ) { cdmode=CDModeDefined; + } else if ( gh_eq_p(mode,gh_symbol2scm("off")) ) { + cdmode=CDModeOff; } else { cdmode=CDModeOff; errl("Unsupported tag",mode); diff --git a/src/stratagus/script.cpp b/src/stratagus/script.cpp index 5ba326ae0..162f3c5cf 100644 --- a/src/stratagus/script.cpp +++ b/src/stratagus/script.cpp @@ -915,6 +915,10 @@ global void SavePreferences(void) case CDModeDefined: strcpy(buf, "defined"); break; + case CDModeStopped: + case CDModeOff: + strcpy(buf, "off"); + break; default: break; }