From 19887eef447e9632c4b7a14badc7f58300f7408d Mon Sep 17 00:00:00 2001
From: nehalmistry <>
Date: Wed, 11 Dec 2002 08:09:41 +0000
Subject: [PATCH] minor cleanups for CDDA mode

---
 src/sound/music.cpp | 38 +++++++++++++-------------------------
 src/ui/menus.cpp    |  4 ++--
 2 files changed, 15 insertions(+), 27 deletions(-)

diff --git a/src/sound/music.cpp b/src/sound/music.cpp
index 3f0d78ef7..5f076399b 100644
--- a/src/sound/music.cpp
+++ b/src/sound/music.cpp
@@ -254,8 +254,12 @@ local int PlayCDRom(const char* name)
 	    }
 	}
     }
+
     // CDPlayer command?
     if (!strncmp(name, ":", 1)) {
+
+	StopMusic();
+
 	if (!CDRom) {
 	    fprintf(stderr, "Couldn't open cdrom drive: %s\n", SDL_GetError());
 	    CDMode = ":stopped";
@@ -278,15 +282,9 @@ local int PlayCDRom(const char* name)
 	return 1;
     }
 
-//    StopMusic();			// FIXME: JOHNS: why stop music here?
-
-    // FIXME: no cdrom, must stop it now!
-
     return 0;
 }
-#endif
-
-#ifdef USE_LIBCDA
+#elif defined(USE_LIBCDA)
 /**
 **	Play music from cdrom.
 **
@@ -331,10 +329,10 @@ local int PlayCDRom(const char* name)
 	}
     }
 
-    StopMusic();
-
     if (!strncmp(name, ":", 1)) {
 
+	StopMusic();
+
 	if (cd_get_tracks(NULL, NULL) == -1)
 	    return 1;
 
@@ -361,13 +359,10 @@ local int PlayCDRom(const char* name)
 	}
 	return 1;
     }
-    // FIXME: no cdrom, must stop it now!
 
     return 0;
 }
-#endif
-
-#ifdef USE_CDDA
+#elif defined(USE_CDDA)
 /**
 **	Play music from cdrom.
 **
@@ -381,16 +376,12 @@ local int PlayCDRom(const char* name)
 {
     int i;
     Sample *sample;
-    struct cdrom_volctrl cdvolume;
 
     if (!strcmp(CDMode, ":off")) {
 	if (!strncmp(name, ":", 1)) {
 	    CDDrive = open("/dev/cdrom", O_RDONLY | O_NONBLOCK);
 	    ioctl(CDDrive, CDROMRESET);
 
-	    ioctl(CDDrive, CDROM_DRIVE_STATUS);
-	    ioctl(CDDrive, CDROM_DISC_STATUS);
-
 	    ioctl(CDDrive, CDROMREADTOCHDR, &CDchdr);
 
 	    for (i = CDchdr.cdth_trk0; i <= CDchdr.cdth_trk1; ++i){
@@ -400,9 +391,6 @@ local int PlayCDRom(const char* name)
 	    }
 	    NumCDTracks = i + 1;
 	    
-	    ioctl(CDDrive, CDROMVOLREAD, &cdvolume);
-	    
-
 	    if (NumCDTracks == 0) {
 		CDMode = ":off";
 		return 1;
@@ -411,10 +399,10 @@ local int PlayCDRom(const char* name)
 	}
     }
 
-//    StopMusic();
-
     if (!strncmp(name, ":", 1)) {
 
+	StopMusic();
+
 	// if mode is play all tracks
 	if (!strcmp(name, ":all")) {
 	    CDMode = ":all";
@@ -432,14 +420,14 @@ local int PlayCDRom(const char* name)
 		CDTrack = MyRand() % NumCDTracks;
 	    } while (CDtocentry[++CDTrack].cdte_ctrl&CDROM_DATA_TRACK);
 	}
-	CDTrack = 3;
-	StopMusic();
+
+	CDTrack = 3; // temporary
+
 	sample = LoadCD(NULL, CDTrack);
 	MusicSample = sample;
 	PlayingMusic = 1;
 	return 1;
     }
-    // FIXME: no cdrom, must stop it now!
 
     return 0;
 
diff --git a/src/ui/menus.cpp b/src/ui/menus.cpp
index 249ac4b4f..a626e17c7 100644
--- a/src/ui/menus.cpp
+++ b/src/ui/menus.cpp
@@ -1743,11 +1743,11 @@ local void SetCdPower(Menuitem *mi __attribute__((unused)))
     }
 #elif defined(USE_CDDA)
     // Start Playing CD
-    if (!PlayingMusic) {
+    if (!strcmp(":off", CDMode) || !strcmp(":stopped", CDMode)) {
 	PlayMusic(":random");
     } else {
     // Stop Playing CD
-	PlayingMusic = 0;
+	StopMusic();
 	CDMode = ":stopped";
     }
 #endif