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

dreammaster dreammaster at scummvm.org
Sun Oct 20 19:47:39 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:
b6bace0fa0 TSAGE: Further R2R fixes for voice playback looking at hotspots


Commit: b6bace0fa070985f5301480c36318043ef7b025e
    https://github.com/scummvm/scummvm/commit/b6bace0fa070985f5301480c36318043ef7b025e
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-10-20T10:47:06-07:00

Commit Message:
TSAGE: Further R2R fixes for voice playback looking at hotspots

Changed paths:
    engines/tsage/core.cpp
    engines/tsage/sound.cpp
    engines/tsage/sound.h



diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp
index 3021134..8021160 100644
--- a/engines/tsage/core.cpp
+++ b/engines/tsage/core.cpp
@@ -1619,7 +1619,8 @@ void SceneItem::display(int resNum, int lineNum, ...) {
 	Common::String msg = (!resNum || (resNum == -1)) ? Common::String() :
 		g_resourceManager->getMessage(resNum, lineNum);
 
-	if ((g_vm->getGameID() != GType_Ringworld) && T2_GLOBALS._uiElements._active)
+	if ((g_vm->getGameID() != GType_Ringworld) && (g_vm->getGameID() != GType_Ringworld2)
+			&& T2_GLOBALS._uiElements._active)
 		T2_GLOBALS._uiElements.hide();
 
 	if (g_globals->_sceneObjects->contains(&g_globals->_sceneText)) {
@@ -1797,7 +1798,8 @@ void SceneItem::display(int resNum, int lineNum, ...) {
 		g_globals->_sceneText.remove();
 	}
 
-	if ((g_vm->getGameID() != GType_Ringworld) && T2_GLOBALS._uiElements._active) {
+	if ((g_vm->getGameID() != GType_Ringworld) && (g_vm->getGameID() != GType_Ringworld2) 
+			&& T2_GLOBALS._uiElements._active) {
 		// Show user interface
 		T2_GLOBALS._uiElements.show();
 
diff --git a/engines/tsage/sound.cpp b/engines/tsage/sound.cpp
index bb98d4d..844cfc1 100644
--- a/engines/tsage/sound.cpp
+++ b/engines/tsage/sound.cpp
@@ -2539,6 +2539,7 @@ void PlayStream::ResFileData::load(Common::SeekableReadStream &stream) {
 PlayStream::PlayStream(): EventHandler() {
 	_index = NULL;
 	_endAction = NULL;
+	_audioStream = NULL;
 }
 
 PlayStream::~PlayStream() {
@@ -2585,12 +2586,12 @@ bool PlayStream::play(int voiceNum, EventHandler *endAction) {
 		_file.skip(4);
 
 		// Create the stream
-		Audio::QueuingAudioStream *audioStream = Audio::makeQueuingAudioStream(rate, false);
+		_audioStream = Audio::makeQueuingAudioStream(rate, false);
 
 		// Load in the first chunk
 		byte *data = (byte *)malloc(chunkSize);
 		_file.read(data, chunkSize);
-		audioStream->queueBuffer(data, chunkSize, DisposeAfterUse::YES, Audio::FLAG_UNSIGNED);
+		_audioStream->queueBuffer(data, chunkSize, DisposeAfterUse::YES, Audio::FLAG_UNSIGNED);
 		
 		// If necessary, load further chunks of the voice in
 		while (chunkSize == (_resData._chunkSize - 16)) {
@@ -2609,13 +2610,13 @@ bool PlayStream::play(int voiceNum, EventHandler *endAction) {
 			// Read in the data for this next chunk and queue it
 			data = (byte *)malloc(chunkSize);
 			_file.read(data, chunkSize);
-			audioStream->queueBuffer(data, chunkSize, DisposeAfterUse::YES, Audio::FLAG_UNSIGNED);
+			_audioStream->queueBuffer(data, chunkSize, DisposeAfterUse::YES, Audio::FLAG_UNSIGNED);
 		}
-
+		
 		g_vm->_mixer->playStream(Audio::Mixer::kSpeechSoundType, &_soundHandle, 
-			audioStream, DisposeAfterUse::YES);
+			_audioStream, DisposeAfterUse::YES);
 		_voiceNum = voiceNum;
-		return true;		
+		return true;
 	}
 	 
 	// If it reaches this point, no valid voice data found
@@ -2623,14 +2624,17 @@ bool PlayStream::play(int voiceNum, EventHandler *endAction) {
 }
 
 void PlayStream::stop() {
-	g_vm->_mixer->stopHandle(_soundHandle);
+	if (_audioStream) {
+		g_vm->_mixer->stopHandle(_soundHandle);
+	}
 
+	_audioStream = NULL;
 	_voiceNum = 0;
 	_endAction = NULL;
 }
 
 bool PlayStream::isPlaying() const {
-	return _voiceNum != 0 && g_vm->_mixer->isSoundHandleActive(_soundHandle);
+	return _audioStream != NULL && !_audioStream->endOfData();
 }
 
 void PlayStream::remove() {
diff --git a/engines/tsage/sound.h b/engines/tsage/sound.h
index 6778044..95d0337 100644
--- a/engines/tsage/sound.h
+++ b/engines/tsage/sound.h
@@ -427,6 +427,7 @@ class PlayStream: public EventHandler {
 private:
 	Common::File _file;
 	ResFileData _resData;
+	Audio::QueuingAudioStream *_audioStream;
 	Audio::SoundHandle _soundHandle;
 	uint16 *_index;
 	EventHandler *_endAction;






More information about the Scummvm-git-logs mailing list