[Scummvm-cvs-logs] SF.net SVN: scummvm: [27798] scummvm/trunk/sound/mixer.cpp

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Sat Jun 30 23:02:58 CEST 2007


Revision: 27798
          http://scummvm.svn.sourceforge.net/scummvm/?rev=27798&view=rev
Author:   fingolfin
Date:     2007-06-30 14:02:58 -0700 (Sat, 30 Jun 2007)

Log Message:
-----------
Changed semantics of Mixer::pause*() methods -- if you pause n times, you have to unpause n times before the sound resumes (this means pauseAll works correct in engines which selectively pause/resume single sounds)

Modified Paths:
--------------
    scummvm/trunk/sound/mixer.cpp

Modified: scummvm/trunk/sound/mixer.cpp
===================================================================
--- scummvm/trunk/sound/mixer.cpp	2007-06-30 18:22:21 UTC (rev 27797)
+++ scummvm/trunk/sound/mixer.cpp	2007-06-30 21:02:58 UTC (rev 27798)
@@ -54,7 +54,7 @@
 	bool _permanent;
 	byte _volume;
 	int8 _balance;
-	bool _paused;
+	int _pauseLevel;
 	int _id;
 	uint32 _samplesConsumed;
 	uint32 _samplesDecoded;
@@ -77,10 +77,15 @@
 		return _input->endOfStream();
 	}
 	void pause(bool paused) {
-		_paused = paused;
+		assert((paused && _pauseLevel >= 0) || (!paused && _pauseLevel));
+	
+		if (paused)
+			_pauseLevel++;
+		else
+			_pauseLevel--;
 	}
 	bool isPaused() {
-		return _paused;
+		return _pauseLevel != 0;
 	}
 	void setVolume(const byte volume) {
 		_volume = volume;
@@ -375,7 +380,7 @@
 Channel::Channel(Mixer *mixer, Mixer::SoundType type, AudioStream *input,
 				bool autofreeStream, bool reverseStereo, int id, bool permanent)
 	: _type(type), _mixer(mixer), _autofreeStream(autofreeStream),
-	  _volume(Mixer::kMaxChannelVolume), _balance(0), _paused(false), _id(id), _samplesConsumed(0),
+	  _volume(Mixer::kMaxChannelVolume), _balance(0), _pauseLevel(0), _id(id), _samplesConsumed(0),
 	  _samplesDecoded(0), _mixerTimeStamp(0), _converter(0), _input(input), _permanent(permanent) {
 	assert(mixer);
 	assert(input);


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list