[Scummvm-cvs-logs] CVS: scummvm/scumm dialogs.cpp,1.116,1.117 imuse.cpp,2.121,2.122 imuse.h,1.54,1.55 imuse_internal.h,2.35,2.36 input.cpp,2.7,2.8 music.h,2.12,2.13 player_mod.cpp,2.18,2.19 player_mod.h,2.16,2.17 player_v2.cpp,2.52,2.53 player_v2.h,2.30,2.31 player_v2a.cpp,2.20,2.21 player_v2a.h,2.10,2.11 player_v3a.cpp,1.20,1.21 player_v3a.h,1.20,1.21 saveload.cpp,1.184,1.185 script_v6he.cpp,2.139,2.140 scumm.cpp,1.279,1.280 scumm.h,1.520,1.521

Max Horn fingolfin at users.sourceforge.net
Sun Nov 28 13:25:04 CET 2004


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30971

Modified Files:
	dialogs.cpp imuse.cpp imuse.h imuse_internal.h input.cpp 
	music.h player_mod.cpp player_mod.h player_v2.cpp player_v2.h 
	player_v2a.cpp player_v2a.h player_v3a.cpp player_v3a.h 
	saveload.cpp script_v6he.cpp scumm.cpp scumm.h 
Log Message:
Trying to cleanup the volume control mess inside the SCUMM engine: renamed MusicEngine::setMasterVolume to setMusicVolume; fixed iMuse to use the correct method for setMusicVolume (previously modified the iMuse internal volume control); hooked up the volume control of various other music engines; added ScummEngine::setupVolume method which can be called whenever volume settings change, and which gurantees that those are handled uniformly

Index: dialogs.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/dialogs.cpp,v
retrieving revision 1.116
retrieving revision 1.117
diff -u -d -r1.116 -r1.117
--- dialogs.cpp	27 Nov 2004 13:10:30 -0000	1.116
+++ dialogs.cpp	28 Nov 2004 21:23:51 -0000	1.117
@@ -462,31 +462,8 @@
 	}
 
 	GUI_OptionsDialog::close();
-
-	// Sync the engine with the config manager
-	int soundVolumeMaster = ConfMan.getInt("master_volume");
-	int soundVolumeMusic = ConfMan.getInt("music_volume");
-	int soundVolumeSfx = ConfMan.getInt("sfx_volume");
-	int soundVolumeSpeech = ConfMan.getInt("speech_volume");
-
-	if (_vm->_imuseDigital) {
-		_vm->_mixer->setVolume(soundVolumeMaster);
-		_vm->_imuseDigital->setGroupMusicVolume(soundVolumeMusic / 2);
-		_vm->_imuseDigital->setGroupSfxVolume(soundVolumeSfx / 2);
-		_vm->_imuseDigital->setGroupVoiceVolume(soundVolumeSpeech / 2);
-		return;
-	}
-
-	if (_vm->_imuse) {
-		_vm->_imuse->set_music_volume(soundVolumeMusic);
-	}
-
-	if (_vm->_musicEngine) {
-		_vm->_musicEngine->setMasterVolume(soundVolumeMaster);
-	}
-
-	_vm->_mixer->setVolume(soundVolumeSfx * soundVolumeMaster / 255);
-	_vm->_mixer->setMusicVolume(soundVolumeMusic);
+	
+	_vm->setupVolumes();
 }
 
 

Index: imuse.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse.cpp,v
retrieving revision 2.121
retrieving revision 2.122
diff -u -d -r2.121 -r2.122
--- imuse.cpp	27 Nov 2004 14:53:36 -0000	2.121
+++ imuse.cpp	28 Nov 2004 21:23:52 -0000	2.122
@@ -566,13 +566,13 @@
 	}
 }
 
-int IMuseInternal::set_music_volume(uint vol) {
+int IMuseInternal::setMusicVolume(uint vol) {
 	if (vol > 255)
 		vol = 255;
 	if (_music_volume == vol)
 		return 0;
 	_music_volume = vol;
-	vol = vol * _master_volume / 255;
+	vol = _master_volume * _music_volume / 255;
 	for (uint i = 0; i < ARRAYSIZE(_channel_volume); i++) {
 		_channel_volume_eff[i] = _channel_volume[i] * vol / 255;
 	}
@@ -581,13 +581,13 @@
 	return 0;
 }
 
-int IMuseInternal::setMasterVolume(uint vol) {
+int IMuseInternal::setImuseMasterVolume(uint vol) {
 	if (vol > 255)
 		vol = 255;
 	if (_master_volume == vol)
 		return 0;
 	_master_volume = vol;
-	vol = vol * _music_volume / 255;
+	vol = _master_volume * _music_volume / 255;
 	for (uint i = 0; i < ARRAYSIZE(_channel_volume); i++) {
 		_channel_volume_eff[i] = _channel_volume[i] * vol / 255;
 	}
@@ -685,8 +685,8 @@
 			if (a[1] > 127)
 				return -1;
 			else {
-				warning ("IMuse doCommand(6) - setMasterVolume (%d)", a[1]);
-				return setMasterVolume((a[1] << 1) |(a[1] ? 0 : 1)); // Convert from 0-127 to 0-255
+				warning ("IMuse doCommand(6) - setImuseMasterVolume (%d)", a[1]);
+				return setImuseMasterVolume((a[1] << 1) |(a[1] ? 0 : 1)); // Convert from 0-127 to 0-255
 			}
 		case 7:
 			warning ("IMuse doCommand(7) - getMasterVolume (%d)", a[1]);
@@ -1378,7 +1378,7 @@
 		// Load all sounds that we need
 		fix_players_after_load(scumm);
 		fix_parts_after_load();
-		setMasterVolume(_master_volume);
+		setImuseMasterVolume(_master_volume);
 
 		if (_midi_native)
 			reallocateMidiChannels(_midi_native);
@@ -1745,8 +1745,7 @@
 void IMuse::on_timer(MidiDriver *midi) { in(); _target->on_timer(midi); out(); }
 void IMuse::pause(bool paused) { in(); _target->pause(paused); out(); }
 int IMuse::save_or_load(Serializer *ser, ScummEngine *scumm) { in(); int ret = _target->save_or_load(ser, scumm); out(); return ret; }
-int IMuse::set_music_volume(uint vol) { in(); int ret = _target->set_music_volume(vol); out(); return ret; }
-void IMuse::setMasterVolume(int vol) { in(); _target->setMasterVolume(vol); out(); }
+void IMuse::setMusicVolume(int vol) { in(); _target->setMusicVolume(vol); out(); }
 void IMuse::startSound(int sound) { in(); _target->startSound(sound); out(); }
 void IMuse::stopSound(int sound) { in(); _target->stopSound(sound); out(); }
 void IMuse::stopAllSounds() { in(); _target->stopAllSounds(); out(); }

Index: imuse.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse.h,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -d -r1.54 -r1.55
--- imuse.h	27 Nov 2004 14:53:37 -0000	1.54
+++ imuse.h	28 Nov 2004 21:23:53 -0000	1.55
@@ -61,8 +61,7 @@
 	void on_timer(MidiDriver *midi);
 	void pause(bool paused);
 	int save_or_load(Serializer *ser, ScummEngine *scumm);
-	int set_music_volume(uint vol);
-	void setMasterVolume(int vol);
+	void setMusicVolume(int vol);
 	void startSound(int sound);
 	void stopSound(int sound);
 	void stopAllSounds();

Index: imuse_internal.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_internal.h,v
retrieving revision 2.35
retrieving revision 2.36
diff -u -d -r2.35 -r2.36
--- imuse_internal.h	27 Nov 2004 14:53:37 -0000	2.35
+++ imuse_internal.h	28 Nov 2004 21:23:53 -0000	2.36
@@ -450,8 +450,8 @@
 	int terminate1();
 	int terminate2();
 	int save_or_load(Serializer *ser, ScummEngine *scumm);
-	int set_music_volume(uint vol);
-	int setMasterVolume(uint vol);
+	int setMusicVolume(uint vol);
+	int setImuseMasterVolume(uint vol);
 	bool startSound(int sound);
 	int stopSound(int sound);
 	int stopAllSounds();

Index: input.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/input.cpp,v
retrieving revision 2.7
retrieving revision 2.8
diff -u -d -r2.7 -r2.8
--- input.cpp	21 Nov 2004 14:48:17 -0000	2.7
+++ input.cpp	28 Nov 2004 21:23:53 -0000	2.8
@@ -382,15 +382,13 @@
 			vol -= 16;
 		vol = vol & 0xF0;
 		ConfMan.set("music_volume", vol);
-		if (_imuse)
-			_imuse->set_music_volume (vol);
+		setupVolumes();
 	} else if (_lastKeyHit == ']') { // ] Music volume up
 		int vol = ConfMan.getInt("music_volume");
 		vol = (vol + 16) & 0xFF0;
 		if (vol > 255) vol = 255;
 		ConfMan.set("music_volume", vol);
-		if (_imuse)
-			_imuse->set_music_volume (vol);
+		setupVolumes();
 	} else if (_lastKeyHit == '-') { // - text speed down
 		if (_defaultTalkDelay < 9)
 			_defaultTalkDelay++;

Index: music.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/music.h,v
retrieving revision 2.12
retrieving revision 2.13
diff -u -d -r2.12 -r2.13
--- music.h	28 Sep 2004 23:47:04 -0000	2.12
+++ music.h	28 Nov 2004 21:23:53 -0000	2.13
@@ -45,7 +45,7 @@
 	 * Set the output volume.
 	 * @param vol		the new output volume
 	 */
-	virtual void setMasterVolume(int vol) = 0;
+	virtual void setMusicVolume(int vol) = 0;
 
 	/**
 	 * Start playing the sound with the given id.

Index: player_mod.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/player_mod.cpp,v
retrieving revision 2.18
retrieving revision 2.19
diff -u -d -r2.18 -r2.19
--- player_mod.cpp	27 Nov 2004 16:12:11 -0000	2.18
+++ player_mod.cpp	28 Nov 2004 21:23:53 -0000	2.19
@@ -59,7 +59,7 @@
 	}
 }
 
-void Player_MOD::setMasterVolume(int vol) {
+void Player_MOD::setMusicVolume(int vol) {
 	_maxvol = vol;
 }
 

Index: player_mod.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/player_mod.h,v
retrieving revision 2.16
retrieving revision 2.17
diff -u -d -r2.16 -r2.17
--- player_mod.h	27 Nov 2004 16:18:50 -0000	2.16
+++ player_mod.h	28 Nov 2004 21:23:53 -0000	2.17
@@ -38,7 +38,7 @@
 public:
 	Player_MOD(ScummEngine *scumm);
 	virtual ~Player_MOD();
-	virtual void setMasterVolume(int vol);
+	virtual void setMusicVolume(int vol);
 
 	virtual void startChannel(int id, void *data, int size, int rate, uint8 vol, int loopStart = 0, int loopEnd = 0, int8 pan = 0);
 	virtual void stopChannel(int id);

Index: player_v2.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/player_v2.cpp,v
retrieving revision 2.52
retrieving revision 2.53
diff -u -d -r2.52 -r2.53
--- player_v2.cpp	27 Nov 2004 16:12:11 -0000	2.52
+++ player_v2.cpp	28 Nov 2004 21:24:00 -0000	2.53
@@ -374,7 +374,7 @@
 	_RNG = NG_PRESET;
 
 	set_pcjr(pcjr);
-	setMasterVolume(255);
+	setMusicVolume(255);
 
 	_mixer->setupPremix(this);
 }
@@ -416,7 +416,7 @@
 	mutex_down();
 }
 
-void Player_V2::setMasterVolume (int vol) {
+void Player_V2::setMusicVolume (int vol) {
 	if (vol > 255)
 		vol = 255;
 

Index: player_v2.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/player_v2.h,v
retrieving revision 2.30
retrieving revision 2.31
diff -u -d -r2.30 -r2.31
--- player_v2.h	27 Nov 2004 16:18:50 -0000	2.30
+++ player_v2.h	28 Nov 2004 21:24:00 -0000	2.31
@@ -78,7 +78,7 @@
 	Player_V2(ScummEngine *scumm, bool pcjr);
 	virtual ~Player_V2();
 
-	virtual void setMasterVolume(int vol);
+	virtual void setMusicVolume(int vol);
 	virtual void startSound(int sound);
 	virtual void stopSound(int sound);
 	virtual void stopAllSounds();

Index: player_v2a.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/player_v2a.cpp,v
retrieving revision 2.20
retrieving revision 2.21
diff -u -d -r2.20 -r2.21
--- player_v2a.cpp	8 Jan 2004 20:37:25 -0000	2.20
+++ player_v2a.cpp	28 Nov 2004 21:24:00 -0000	2.21
@@ -1178,8 +1178,8 @@
 #endif
 }
 
-void Player_V2A::setMasterVolume (int vol) {
-	_mod->setMasterVolume(vol);
+void Player_V2A::setMusicVolume (int vol) {
+	_mod->setMusicVolume(vol);
 }
 
 int Player_V2A::getSoundSlot (int id) const {

Index: player_v2a.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/player_v2a.h,v
retrieving revision 2.10
retrieving revision 2.11
diff -u -d -r2.10 -r2.11
--- player_v2a.h	28 Sep 2004 23:47:04 -0000	2.10
+++ player_v2a.h	28 Nov 2004 21:24:00 -0000	2.11
@@ -43,7 +43,7 @@
 	Player_V2A(ScummEngine *scumm);
 	virtual ~Player_V2A();
 
-	virtual void setMasterVolume(int vol);
+	virtual void setMusicVolume(int vol);
 	virtual void startSound(int sound);
 	virtual void stopSound(int sound);
 	virtual void stopAllSounds();

Index: player_v3a.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/player_v3a.cpp,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -d -r1.20 -r1.21
--- player_v3a.cpp	15 Feb 2004 08:06:32 -0000	1.20
+++ player_v3a.cpp	28 Nov 2004 21:24:00 -0000	1.21
@@ -75,8 +75,8 @@
 	}
 }
 
-void Player_V3A::setMasterVolume (int vol) {
-	_mod->setMasterVolume(vol);
+void Player_V3A::setMusicVolume (int vol) {
+	_mod->setMusicVolume(vol);
 }
 
 int Player_V3A::getMusChan (int id) const {

Index: player_v3a.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/player_v3a.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -d -r1.20 -r1.21
--- player_v3a.h	28 Sep 2004 23:47:04 -0000	1.20
+++ player_v3a.h	28 Nov 2004 21:24:00 -0000	1.21
@@ -42,7 +42,7 @@
 	Player_V3A(ScummEngine *scumm);
 	virtual ~Player_V3A();
 
-	virtual void setMasterVolume(int vol);
+	virtual void setMusicVolume(int vol);
 	virtual void startSound(int sound);
 	virtual void stopSound(int sound);
 	virtual void stopAllSounds();

Index: saveload.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/saveload.cpp,v
retrieving revision 1.184
retrieving revision 1.185
diff -u -d -r1.184 -r1.185
--- saveload.cpp	27 Nov 2004 18:01:44 -0000	1.184
+++ saveload.cpp	28 Nov 2004 21:24:00 -0000	1.185
@@ -870,13 +870,14 @@
 
 	if (_imuse && (_saveSound || !_saveTemporaryState)) {
 		_imuse->save_or_load(s, this);
-		_imuse->setMasterVolume(ConfMan.getInt("master_volume"));
-		_imuse->set_music_volume(ConfMan.getInt("music_volume"));
 	}
 
 	if (_imuseDigital) {
 		_imuseDigital->saveOrLoad(s);
 	}
+
+	if (s->isLoading())
+		setupVolumes();
 }
 
 void ScummEngine::saveLoadResource(Serializer *ser, int type, int idx) {

Index: script_v6he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v6he.cpp,v
retrieving revision 2.139
retrieving revision 2.140
diff -u -d -r2.139 -r2.140
--- script_v6he.cpp	19 Oct 2004 12:30:41 -0000	2.139
+++ script_v6he.cpp	28 Nov 2004 21:24:00 -0000	2.140
@@ -1159,7 +1159,7 @@
 	int arg = pop();
 	switch (subOp) {
 	case 0xde:
-		_imuse->set_music_volume(arg);
+		_imuse->setMusicVolume(arg);
 		break;
 	case 0xdf:
 		// Used in fbear introduction

Index: scumm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.cpp,v
retrieving revision 1.279
retrieving revision 1.280
diff -u -d -r1.279 -r1.280
--- scumm.cpp	27 Nov 2004 17:50:22 -0000	1.279
+++ scumm.cpp	28 Nov 2004 21:24:00 -0000	1.280
@@ -1091,8 +1091,7 @@
 	if (_imuse) {
 		_imuse->setBase(res.address[rtSound]);
 
-		_imuse->setMasterVolume(ConfMan.getInt("master_volume"));
-		_imuse->set_music_volume(ConfMan.getInt("music_volume"));
+		_imuse->setMusicVolume(ConfMan.getInt("music_volume"));
 	}
 	_sound->setupSound();
 
@@ -1326,16 +1325,10 @@
 			warning("MIDI driver depends on sound mixer, switching to null MIDI driver");
 		}
 	}
-	_mixer->setVolume(ConfMan.getInt("sfx_volume") * ConfMan.getInt("master_volume") / 255);
-	_mixer->setMusicVolume(ConfMan.getInt("music_volume"));
 
 	// Init iMuse
 	if (_features & GF_DIGI_IMUSE) {
 		_musicEngine = _imuseDigital = new IMuseDigital(this, 10);
-		_mixer->setVolume(ConfMan.getInt("master_volume"));
-		_imuseDigital->setGroupMusicVolume(ConfMan.getInt("music_volume") / 2);
-		_imuseDigital->setGroupSfxVolume(ConfMan.getInt("sfx_volume") / 2);
-		_imuseDigital->setGroupVoiceVolume(ConfMan.getInt("speech_volume") / 2);
 	} else if ((_features & GF_AMIGA) && (_version == 2)) {
 		_musicEngine = new Player_V2A(this);
 	} else if ((_features & GF_AMIGA) && (_version == 3)) {
@@ -1367,12 +1360,42 @@
 			}
 			if (midi == MDT_TOWNS)
 				_imuse->property(IMuse::PROP_DIRECT_PASSTHROUGH, 1);
-			_imuse->set_music_volume(ConfMan.getInt("music_volume"));
 		}
 	}
+
+	setupVolumes();
+
 #endif // ph0x-hack
 }
 
+void ScummEngine::setupVolumes() {
+
+	// Sync the engine with the config manager
+	int soundVolumeMaster = ConfMan.getInt("master_volume");
+	int soundVolumeMusic = ConfMan.getInt("music_volume");
+	int soundVolumeSfx = ConfMan.getInt("sfx_volume");
+	int soundVolumeSpeech = ConfMan.getInt("speech_volume");
+
+	if (_imuse) {
+		_imuse->setMusicVolume(soundVolumeMusic);
+	}
+
+	if (_musicEngine) {
+		_musicEngine->setMusicVolume(soundVolumeMusic);
+	}
+
+	_mixer->setVolume(soundVolumeSfx * soundVolumeMaster / 255);
+	_mixer->setMusicVolume(soundVolumeMusic);
+
+	if (_imuseDigital) {
+		_mixer->setVolume(soundVolumeMaster);
+		_imuseDigital->setGroupMusicVolume(soundVolumeMusic / 2);
+		_imuseDigital->setGroupSfxVolume(soundVolumeSfx / 2);
+		_imuseDigital->setGroupVoiceVolume(soundVolumeSpeech / 2);
+	}
+}
+
+
 
 #pragma mark -
 #pragma mark --- Main loop ---

Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.520
retrieving revision 1.521
diff -u -d -r1.520 -r1.521
--- scumm.h	27 Nov 2004 17:50:22 -0000	1.520
+++ scumm.h	28 Nov 2004 21:24:01 -0000	1.521
@@ -393,6 +393,7 @@
 
 	void loadCJKFont();
 	void setupMusic(int midi);
+	void setupVolumes();
 
 	// Scumm main loop
 	int scummLoop(int delta);





More information about the Scummvm-git-logs mailing list