[Scummvm-cvs-logs] CVS: scummvm/sound audiocd.cpp,1.1,1.2 audiocd.h,1.1,1.2

Max Horn fingolfin at users.sourceforge.net
Sat Nov 29 05:57:03 CET 2003


Update of /cvsroot/scummvm/scummvm/sound
In directory sc8-pr-cvs1:/tmp/cvs-serv21672

Modified Files:
	audiocd.cpp audiocd.h 
Log Message:
added API to query CD playback status; renamed AudioCDManager methods

Index: audiocd.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/audiocd.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- audiocd.cpp	29 Nov 2003 12:09:51 -0000	1.1
+++ audiocd.cpp	29 Nov 2003 13:56:32 -0000	1.2
@@ -33,19 +33,21 @@
 	_current_cache = 0;
 }
 
-void AudioCDManager::playCDTrack(int track, int numLoops, int startFrame, int duration) {
+void AudioCDManager::play(int track, int numLoops, int startFrame, int duration) {
 	if (numLoops != 0 || startFrame != 0) {
 		// Try to load the track from a .mp3/.ogg file, and if found, use
 		// that. If not found, attempt to do regular Audio CD playback of
 		// the requested track.
 		int index = getCachedTrack(track);
+
+		_cd.track = track;
+		_cd.numLoops = numLoops;
+		_cd.start = startFrame;
+		_cd.duration = duration;
+
 		if (index >= 0) {
 			g_engine->_mixer->stopHandle(_cd.handle);
 			_cd.playing = true;
-			_cd.track = track;
-			_cd.numLoops = numLoops;
-			_cd.start = startFrame;
-			_cd.duration = duration;
 			_track_info[index]->play(g_engine->_mixer, &_cd.handle, _cd.start, _cd.duration);
 		} else {
 			g_system->play_cdrom(track, numLoops, startFrame, duration);
@@ -53,7 +55,7 @@
 	}
 }
 
-void AudioCDManager::stopCD() {
+void AudioCDManager::stop() {
 	if (_cd.playing) {
 		g_engine->_mixer->stopHandle(_cd.handle);
 		_cd.playing = false;
@@ -62,7 +64,7 @@
 	}
 }
 
-int AudioCDManager::pollCD() const {
+int AudioCDManager::isPlaying() const {
 	return _cd.playing || g_system->poll_cdrom();
 }
 
@@ -74,12 +76,9 @@
 			// to be repeated, and if that's the case, play it again. Else, stop
 			// the CD explicitly.
 			if (_cd.numLoops == -1 || --_cd.numLoops > 0) {
-//FIXME				_scumm->VAR(_scumm->VAR_MUSIC_TIMER) = 0;
-//FIXME				if (!_soundsPaused) {
-					int index = getCachedTrack(_cd.track);
-					assert(index >= 0);
-					_track_info[index]->play(g_engine->_mixer, &_cd.handle, _cd.start, _cd.duration);
-//FIXME				}
+				int index = getCachedTrack(_cd.track);
+				assert(index >= 0);
+				_track_info[index]->play(g_engine->_mixer, &_cd.handle, _cd.start, _cd.duration);
 			} else {
 				g_engine->_mixer->stopHandle(_cd.handle);
 				_cd.playing = false;
@@ -88,6 +87,14 @@
 	} else {
 		g_system->update_cdrom();
 	}
+}
+
+AudioCDManager::Status AudioCDManager::getStatus() const {
+	// TODO: This could be improved for "real" CD playback.
+	// But to do that, we have to extend the OSystem interface.
+	Status info = _cd;
+	info.playing = isPlaying();
+	return info;
 }
 
 int AudioCDManager::getCachedTrack(int track) {

Index: audiocd.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/audiocd.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- audiocd.h	29 Nov 2003 12:09:51 -0000	1.1
+++ audiocd.h	29 Nov 2003 13:56:32 -0000	1.2
@@ -37,11 +37,22 @@
 
 class AudioCDManager : public Common::Singleton<AudioCDManager> {
 public:
-	void playCDTrack(int track, int numLoops, int startFrame, int duration);
-	void stopCD();
-	int pollCD() const;
+	struct Status {
+		bool playing;
+		int track;
+		int start;
+		int duration;
+		int numLoops;
+	};
+
+	void play(int track, int numLoops, int startFrame, int duration);
+	void stop();
+	int isPlaying() const;
+
 	void updateCD();
 
+	Status getStatus() const;
+
 private:
 	friend class Common::Singleton<AudioCDManager>;
 	AudioCDManager();
@@ -50,21 +61,17 @@
 
 private:
 	/* used for emulated CD music */
+	struct ExtStatus : Status {
+		PlayingSoundHandle handle;
+	};
+	ExtStatus _cd;
+
 	enum {
 		CACHE_TRACKS = 10
 	};
 	int _cached_tracks[CACHE_TRACKS];
 	DigitalTrackInfo *_track_info[CACHE_TRACKS];
 	int _current_cache;
-
-	struct {
-		PlayingSoundHandle handle;
-		int track;
-		int start;
-		int duration;
-		int numLoops;
-		bool playing;
-	} _cd;
 
 };
 





More information about the Scummvm-git-logs mailing list