[Scummvm-cvs-logs] scummvm master -> b749c2115b66a20fa6457a82eb1edf6f872fd6a5

Strangerke Strangerke at scummvm.org
Sun Aug 11 11:41:55 CEST 2013


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
b749c2115b MORTEVIELLE: Move the end of "sentence" to the main loop in order to fix the display


Commit: b749c2115b66a20fa6457a82eb1edf6f872fd6a5
    https://github.com/scummvm/scummvm/commit/b749c2115b66a20fa6457a82eb1edf6f872fd6a5
Author: Strangerke (strangerke at scummvm.org)
Date: 2013-08-11T02:40:16-07:00

Commit Message:
MORTEVIELLE: Move the end of "sentence" to the main loop in order to fix the display

Changed paths:
    engines/mortevielle/sound.cpp
    engines/mortevielle/sound.h
    engines/mortevielle/speech.cpp
    engines/mortevielle/speech.h
    engines/mortevielle/utils.cpp



diff --git a/engines/mortevielle/sound.cpp b/engines/mortevielle/sound.cpp
index a3ac56c..b3edead 100644
--- a/engines/mortevielle/sound.cpp
+++ b/engines/mortevielle/sound.cpp
@@ -238,6 +238,11 @@ void SoundManager::litph(tablint &t, int typ, int tempo) {
 	if (_vm->_speechManager._typlec == 0)
 		return;
 
+	if (!_vm->_speechManager._buildingSentence) {
+		if (!_mixer->isSoundHandleActive(_soundHandle))
+			_mixer->stopHandle(_speakerHandle);
+		_vm->_speechManager._buildingSentence = true;
+	}
 	int freq = tempo * 10 * 25.2;
 	int i = 0;
 	while (i < _vm->_speechManager._ptr_oct) {
diff --git a/engines/mortevielle/sound.h b/engines/mortevielle/sound.h
index dccae0e..101a62b 100644
--- a/engines/mortevielle/sound.h
+++ b/engines/mortevielle/sound.h
@@ -103,6 +103,8 @@ private:
 public:
 	Audio::Mixer *_mixer;
 	Audio::QueuingAudioStream *_audioStream;
+	Audio::SoundHandle _soundHandle;
+
 
 	SoundManager(Audio::Mixer *mixer);
 	~SoundManager();
diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp
index 4940c93..499f852 100644
--- a/engines/mortevielle/speech.cpp
+++ b/engines/mortevielle/speech.cpp
@@ -70,6 +70,7 @@ SpeechManager::SpeechManager() {
 		_queue[i]._rep = 0;
 	}
 	_noise5Buf = nullptr;
+	_buildingSentence = false;
 }
 
 SpeechManager::~SpeechManager() {
@@ -553,13 +554,10 @@ void SpeechManager::startSpeech(int rep, int ht, int typ) {
 	handlePhoneme();
 	_vm->_soundManager.litph(_tbi, typ, tempo);
 
+	_vm->_speechManager._buildingSentence = false;
 	if (typ != 0) {
-		Audio::SoundHandle soundHandle;
 		_vm->_soundManager._audioStream->finish();
-		_vm->_soundManager._mixer->playStream(Audio::Mixer::kSFXSoundType, &soundHandle, _vm->_soundManager._audioStream);
-		while (_vm->_soundManager._mixer->isSoundHandleActive(soundHandle) && !_vm->keyPressed() && !_vm->_mouseClick && !_vm->shouldQuit())
-			;
-		_vm->_soundManager._mixer->stopHandle(soundHandle);
+		_vm->_soundManager._mixer->playStream(Audio::Mixer::kSFXSoundType, &_vm->_soundManager._soundHandle, _vm->_soundManager._audioStream);
 		_vm->_soundManager._audioStream = nullptr;
 	}
 
diff --git a/engines/mortevielle/speech.h b/engines/mortevielle/speech.h
index 0117a61..aa231c3 100644
--- a/engines/mortevielle/speech.h
+++ b/engines/mortevielle/speech.h
@@ -58,7 +58,6 @@ private:
 
 	int _phonemeNumb;
 	SpeechQueue _queue[3];
-
 public:
 	int _typlec;
 	int _ptr_oct;
@@ -67,6 +66,7 @@ public:
 	int _mlec;
 	byte *_noise5Buf;
 	int _noise5Size;
+	bool _buildingSentence;
 
 	SpeechManager();
 	~SpeechManager();
diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp
index 603dc6e..db1861c 100644
--- a/engines/mortevielle/utils.cpp
+++ b/engines/mortevielle/utils.cpp
@@ -276,6 +276,9 @@ void MortevielleEngine::handleAction() {
 			if (shouldQuit())
 				return;
 			++temps;
+			if (!_soundManager._mixer->isSoundHandleActive(_soundManager._soundHandle) || keyPressed() || _mouseClick) {
+				_soundManager._mixer->stopHandle(_soundManager._soundHandle);
+			}
 		} while (!((_menu._menuSelected) || (temps > lim) || (funct) || (_anyone)));
 		_inMainGameLoop = false;
 






More information about the Scummvm-git-logs mailing list