diff --git a/src/sound/music.cpp b/src/sound/music.cpp index d0b0aa0ae..458c7570e 100644 --- a/src/sound/music.cpp +++ b/src/sound/music.cpp @@ -226,13 +226,15 @@ local int PlayCDRom(const char* name) { if (!strcmp(CDMode, ":off")) { if (!strncmp(name, ":", 1)) { - if (cd_init() < 0) { + if (cd_init()) { fprintf(stderr, "Error initialising libcda \n"); + CDMode = ":off"; return 1; } - if (cd_get_tracks(&CDTrack, &NumCDTracks) == -1) + if (cd_get_tracks(&CDTrack, &NumCDTracks)) return 1; if (NumCDTracks == 0) { + CDMode = ":off"; return 1; } --CDTrack; diff --git a/src/ui/menus.cpp b/src/ui/menus.cpp index 8e1e51ce5..f16be502e 100644 --- a/src/ui/menus.cpp +++ b/src/ui/menus.cpp @@ -1752,6 +1752,8 @@ global void SoundOptions(void) #if defined(USE_LIBCDA) || defined(USE_SDLCD) if (strcmp(":off", CDMode) && strcmp(":stopped", CDMode)) SoundOptionsMenuItems[i].d.gem.state = MI_GSTATE_CHECKED; + else + SoundOptionsMenuItems[i].d.gem.state = MI_GSTATE_UNCHECKED; #ifdef USE_LIBCDA cd_get_volume(&i, &i); SoundOptionsMenuItems[14].d.hslider.percent = (i * 100) / 255; @@ -1837,14 +1839,14 @@ local void SetCdPower(Menuitem *mi) /// Start Playing CD if (!strcmp(":off", CDMode) || !strcmp(":stopped", CDMode)) { PlayMusic(":random"); - if (!cd_current_track()) - SoundOptionsMenuItems[i].d.gem.state = MI_GSTATE_UNCHECKED; } else { /// Stop Playing CD cd_stop(); CDMode = ":stopped"; } #endif + EndMenu(); + SoundOptions(); } local void SetFogOfWar(Menuitem *mi)