[Scummvm-cvs-logs] scummvm master -> 9694cbbaafcd7d043edb5755df5cc5dda18a5d16

wjp wjp at usecode.org
Sat Apr 20 16:19:39 CEST 2013


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

Summary:
09fc458f15 SCI: Report sound stream loading errors
9694cbbaaf SCI: Fix resource type range checks


Commit: 09fc458f15bdd320cb8d112ac1fd23a45156bd1d
    https://github.com/scummvm/scummvm/commit/09fc458f15bdd320cb8d112ac1fd23a45156bd1d
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2013-04-20T07:13:41-07:00

Commit Message:
SCI: Report sound stream loading errors

Changed paths:
    engines/sci/sound/audio.cpp



diff --git a/engines/sci/sound/audio.cpp b/engines/sci/sound/audio.cpp
index 528bb51..8f405b0 100644
--- a/engines/sci/sound/audio.cpp
+++ b/engines/sci/sound/audio.cpp
@@ -324,7 +324,10 @@ Audio::RewindableAudioStream *AudioPlayer::getAudioStream(uint32 number, uint32
 			// Calculate samplelen from WAVE header
 			int waveSize = 0, waveRate = 0;
 			byte waveFlags = 0;
-			Audio::loadWAVFromStream(*waveStream, waveSize, waveRate, waveFlags);
+			bool ret = Audio::loadWAVFromStream(*waveStream, waveSize, waveRate, waveFlags);
+			if (!ret)
+				error("Failed to load WAV from stream");
+
 			*sampleLen = (waveFlags & Audio::FLAG_16BITS ? waveSize >> 1 : waveSize) * 60 / waveRate;
 
 			waveStream->seek(0, SEEK_SET);
@@ -336,7 +339,10 @@ Audio::RewindableAudioStream *AudioPlayer::getAudioStream(uint32 number, uint32
 			// Calculate samplelen from AIFF header
 			int waveSize = 0, waveRate = 0;
 			byte waveFlags = 0;
-			Audio::loadAIFFFromStream(*waveStream, waveSize, waveRate, waveFlags);
+			bool ret = Audio::loadAIFFFromStream(*waveStream, waveSize, waveRate, waveFlags);
+			if (!ret)
+				error("Failed to load AIFF from stream");
+
 			*sampleLen = (waveFlags & Audio::FLAG_16BITS ? waveSize >> 1 : waveSize) * 60 / waveRate;
 
 			waveStream->seek(0, SEEK_SET);
@@ -347,6 +353,9 @@ Audio::RewindableAudioStream *AudioPlayer::getAudioStream(uint32 number, uint32
 			Common::SeekableReadStream *sndStream = new Common::MemoryReadStream(audioRes->data, audioRes->size, DisposeAfterUse::NO);
 
 			audioSeekStream = Audio::makeMacSndStream(sndStream, DisposeAfterUse::YES);
+			if (!audioSeekStream)
+				error("Failed to load Mac sound stream");
+
 		} else {
 			// SCI1 raw audio
 			size = audioRes->size;


Commit: 9694cbbaafcd7d043edb5755df5cc5dda18a5d16
    https://github.com/scummvm/scummvm/commit/9694cbbaafcd7d043edb5755df5cc5dda18a5d16
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2013-04-20T07:17:49-07:00

Commit Message:
SCI: Fix resource type range checks

Changed paths:
    engines/sci/resource.cpp



diff --git a/engines/sci/resource.cpp b/engines/sci/resource.cpp
index 1da0c5d..d14c965 100644
--- a/engines/sci/resource.cpp
+++ b/engines/sci/resource.cpp
@@ -158,24 +158,24 @@ static const ResourceType s_resTypeMapSci21[] = {
 ResourceType ResourceManager::convertResType(byte type) {
 	type &= 0x7f;
 
-	if (_mapVersion < kResVersionSci2) {
+	bool forceSci0 = false;
+
+	// LSL6 hires doesn't have the chunk resource type, to match
+	// the resource types of the lowres version, thus we use the
+	// older resource types here.
+	// PQ4 CD and QFG4 CD are SCI2.1, but use the resource types of the
+	// corresponding SCI2 floppy disk versions.
+	if (g_sci && (g_sci->getGameId() == GID_LSL6HIRES ||
+	        g_sci->getGameId() == GID_QFG4 || g_sci->getGameId() == GID_PQ4))
+		forceSci0 = true;
+
+	if (_mapVersion < kResVersionSci2 || forceSci0) {
 		// SCI0 - SCI2
 		if (type < ARRAYSIZE(s_resTypeMapSci0))
 			return s_resTypeMapSci0[type];
 	} else {
-		// SCI2.1+
-		if (type < ARRAYSIZE(s_resTypeMapSci21)) {
-			// LSL6 hires doesn't have the chunk resource type, to match
-			// the resource types of the lowres version, thus we use the
-			// older resource types here.
-			// PQ4 CD and QFG4 CD are SCI2.1, but use the resource types of the
-			// corresponding SCI2 floppy disk versions.
-			if (g_sci && (g_sci->getGameId() == GID_LSL6HIRES ||
-				g_sci->getGameId() == GID_QFG4 || g_sci->getGameId() == GID_PQ4))
-				return s_resTypeMapSci0[type];
-			else
-				return s_resTypeMapSci21[type];
-		}
+		if (type < ARRAYSIZE(s_resTypeMapSci21))
+			return s_resTypeMapSci21[type];
 	}
 
 	return kResourceTypeInvalid;






More information about the Scummvm-git-logs mailing list