[Scummvm-git-logs] scummvm master -> 3f42f212d478c84876db3fb240ae18124f9a7b2b

bgK bastien.bouclet at gmail.com
Thu Nov 2 19:49:55 CET 2017


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

Summary:
9b9600a50f VIDEO: Express VideoDecoder::endOfVideo using easier to understand logic
2f733c812a BASE: Minor command line detection cleanup
f4a0566e37 MOHAWK: RIVEN: Remove the testing flag
3f42f212d4 NEWS: Add important Myst bug fixes


Commit: 9b9600a50f10cdc5dcfc1d43c0ff27a5728a98ef
    https://github.com/scummvm/scummvm/commit/9b9600a50f10cdc5dcfc1d43c0ff27a5728a98ef
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2017-11-02T19:49:43+01:00

Commit Message:
VIDEO: Express VideoDecoder::endOfVideo using easier to understand logic

Changed paths:
    video/video_decoder.cpp


diff --git a/video/video_decoder.cpp b/video/video_decoder.cpp
index 980138c..6e408ba 100644
--- a/video/video_decoder.cpp
+++ b/video/video_decoder.cpp
@@ -293,9 +293,14 @@ uint32 VideoDecoder::getTimeToNextFrame() const {
 }
 
 bool VideoDecoder::endOfVideo() const {
-	for (TrackList::const_iterator it = _tracks.begin(); it != _tracks.end(); it++)
-		if (!(*it)->endOfTrack() && (!isPlaying() || (*it)->getTrackType() != Track::kTrackTypeVideo || !_endTimeSet || ((VideoTrack *)*it)->getNextFrameStartTime() < (uint)_endTime.msecs()))
+	for (TrackList::const_iterator it = _tracks.begin(); it != _tracks.end(); it++) {
+		const Track *track = *it;
+
+		bool videoEndTimeReached = _endTimeSet && track->getTrackType() == Track::kTrackTypeVideo && ((const VideoTrack *)track)->getNextFrameStartTime() >= (uint)_endTime.msecs();
+		bool endReached = track->endOfTrack() || (isPlaying() && videoEndTimeReached);
+		if (!endReached)
 			return false;
+	}
 
 	return true;
 }
@@ -910,9 +915,17 @@ bool VideoDecoder::hasFramesLeft() const {
 	// This is similar to endOfVideo(), except it doesn't take Audio into account (and returns true if not the end of the video)
 	// This is only used for needsUpdate() atm so that setEndTime() works properly
 	// And unlike endOfVideoTracks(), this takes into account _endTime
-	for (TrackList::const_iterator it = _tracks.begin(); it != _tracks.end(); it++)
-		if ((*it)->getTrackType() == Track::kTrackTypeVideo && !(*it)->endOfTrack() && (!isPlaying() || !_endTimeSet || ((VideoTrack *)*it)->getNextFrameStartTime() < (uint)_endTime.msecs()))
+	for (TrackList::const_iterator it = _tracks.begin(); it != _tracks.end(); it++) {
+		if ((*it)->getTrackType() != Track::kTrackTypeVideo)
+			continue;
+
+		const VideoTrack *track = (const VideoTrack *)*it;
+
+		bool videoEndTimeReached = _endTimeSet && track->getNextFrameStartTime() >= (uint)_endTime.msecs();
+		bool endReached = track->endOfTrack() || (isPlaying() && videoEndTimeReached);
+		if (!endReached)
 			return true;
+	}
 
 	return false;
 }


Commit: 2f733c812aaa1726dbba9f987270a585505e9953
    https://github.com/scummvm/scummvm/commit/2f733c812aaa1726dbba9f987270a585505e9953
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2017-11-02T19:49:43+01:00

Commit Message:
BASE: Minor command line detection cleanup

Changed paths:
    base/commandLine.cpp


diff --git a/base/commandLine.cpp b/base/commandLine.cpp
index 62219b2..640daa1 100644
--- a/base/commandLine.cpp
+++ b/base/commandLine.cpp
@@ -807,7 +807,7 @@ static void listAudioDevices() {
 }
 
 /** Display all games in the given directory, or current directory if empty */
-static GameList getGameList(Common::FSNode dir) {
+static GameList getGameList(const Common::FSNode &dir) {
 	Common::FSList files;
 
 	//Collect all files from directory
@@ -827,7 +827,7 @@ static GameList getGameList(Common::FSNode dir) {
 }
 
 static bool addGameToConf(const GameDescriptor &gd) {
-	Common::String domain = gd.preferredtarget();
+	const Common::String &domain = gd.preferredtarget();
 
 	// If game has already been added, don't add
 	if (ConfMan.hasGameDomain(domain))
@@ -852,7 +852,7 @@ static bool addGameToConf(const GameDescriptor &gd) {
 	return true;
 }
 
-static GameList recListGames(Common::FSNode dir, Common::String gameId, bool recursive) {
+static GameList recListGames(const Common::FSNode &dir, const Common::String &gameId, bool recursive) {
 	GameList list = getGameList(dir);
 
 	if (recursive) {
@@ -871,11 +871,8 @@ static GameList recListGames(Common::FSNode dir, Common::String gameId, bool rec
 }
 
 /** Display all games in the given directory, return ID of first detected game */
-static Common::String detectGames(Common::String path, Common::String gameId, Common::String recursiveOptStr) {
+static Common::String detectGames(const Common::String &path, const Common::String &gameId, bool recursive) {
 	bool noPath = path.empty();
-	if (noPath)
-		path = ".";
-	bool recursive = (recursiveOptStr == "true");
 	//Current directory
 	Common::FSNode dir(path);
 	GameList candidates = recListGames(dir, gameId, recursive);
@@ -900,7 +897,7 @@ static Common::String detectGames(Common::String path, Common::String gameId, Co
 	return candidates[0].gameid();
 }
 
-static int recAddGames(Common::FSNode dir, Common::String game, bool recursive) {
+static int recAddGames(const Common::FSNode &dir, const Common::String &game, bool recursive) {
 	int count = 0;
 	GameList list = getGameList(dir);
 	for (GameList::iterator v = list.begin(); v != list.end(); ++v) {
@@ -927,15 +924,12 @@ static int recAddGames(Common::FSNode dir, Common::String game, bool recursive)
 	return count;
 }
 
-static bool addGames(Common::String path, Common::String game, Common::String recursiveOptStr) {
-	if (path.empty())
-		path = ".";
-	bool recursive = (recursiveOptStr == "true");
+static bool addGames(const Common::String &path, const Common::String &game, bool recursive) {
 	//Current directory
 	Common::FSNode dir(path);
 	int added = recAddGames(dir, game, recursive);
 	printf("Added %d games\n", added);
-	if (added == 0 && recursive == false) {
+	if (added == 0 && !recursive) {
 		printf("Consider using --recursive to search inside subdirectories\n");
 	}
 	ConfMan.flushToDisk();
@@ -1168,10 +1162,11 @@ bool processSettings(Common::String &command, Common::StringMap &settings, Commo
 		printf(HELP_STRING, s_appName);
 		return true;
 	} else if (command == "auto-detect") {
+		bool resursive = settings["recursive"] == "true";
 		// If auto-detects fails (returns an empty ID) return true to close ScummVM.
 		// If we get a non-empty ID, we store it in command so that it gets processed together with the
 		// other command line options below.
-		if (settings["recursive"] == "true") {
+		if (resursive) {
 			printf("ERROR: Autodetection not supported with --recursive; are you sure you didn't want --detect?\n");
 			err = Common::kUnknownError;
 			return true;
@@ -1179,17 +1174,17 @@ bool processSettings(Common::String &command, Common::StringMap &settings, Commo
 			// From an UX point of view, however, it might get confusing.
 			// Consider removing this if consensus says otherwise.
 		} else {
-			command = detectGames(settings["path"], settings["game"], settings["recursive"]);
+			command = detectGames(settings["path"], settings["game"], resursive);
 			if (command.empty()) {
 				err = Common::kNoGameDataFoundError;
 				return true;
 			}
 		}
 	} else if (command == "detect") {
-		detectGames(settings["path"], settings["game"], settings["recursive"]);
+		detectGames(settings["path"], settings["game"], settings["recursive"] == "true");
 		return true;
 	} else if (command == "add") {
-		addGames(settings["path"], settings["game"], settings["recursive"]);
+		addGames(settings["path"], settings["game"], settings["recursive"] == "true");
 		return true;
 	}
 #ifdef DETECTOR_TESTING_HACK


Commit: f4a0566e37c6c97032bd53821ab8c30939063a45
    https://github.com/scummvm/scummvm/commit/f4a0566e37c6c97032bd53821ab8c30939063a45
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2017-11-02T19:49:43+01:00

Commit Message:
MOHAWK: RIVEN: Remove the testing flag

Changed paths:
    engines/mohawk/detection_tables.h


diff --git a/engines/mohawk/detection_tables.h b/engines/mohawk/detection_tables.h
index 0cb1204..e35fc84 100644
--- a/engines/mohawk/detection_tables.h
+++ b/engines/mohawk/detection_tables.h
@@ -330,7 +330,7 @@ static const MohawkGameDescription gameDescriptions[] = {
 			AD_ENTRY1("a_Data.MHK", "71145fdecbd68a0cfc292c2fbddf8e08"),
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_TESTING,
+			ADGF_NO_FLAGS,
 			GUI_OPTIONS_RIVEN
 		},
 		GType_RIVEN,
@@ -348,7 +348,7 @@ static const MohawkGameDescription gameDescriptions[] = {
 			AD_ENTRY1("a_Data.MHK", "d8ccae34a0e3c709135a73f449b783be"),
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_TESTING,
+			ADGF_NO_FLAGS,
 			GUI_OPTIONS_RIVEN
 		},
 		GType_RIVEN,
@@ -366,7 +366,7 @@ static const MohawkGameDescription gameDescriptions[] = {
 			AD_ENTRY1("a_Data.MHK", "249e8c995d191b03ee94c892c0eac775"),
 			Common::ES_ESP,
 			Common::kPlatformWindows,
-			ADGF_TESTING,
+			ADGF_NO_FLAGS,
 			GUI_OPTIONS_RIVEN
 		},
 		GType_RIVEN,
@@ -384,7 +384,7 @@ static const MohawkGameDescription gameDescriptions[] = {
 			AD_ENTRY1("a_Data.MHK", "aff2a384aaa9a0e0ec51010f708c5c04"),
 			Common::FR_FRA,
 			Common::kPlatformWindows,
-			ADGF_TESTING,
+			ADGF_NO_FLAGS,
 			GUI_OPTIONS_RIVEN
 		},
 		GType_RIVEN,
@@ -402,7 +402,7 @@ static const MohawkGameDescription gameDescriptions[] = {
 			AD_ENTRY1("a_Data.MHK", "0e21e89df7788f32056b6521abf2e81a"),
 			Common::IT_ITA,
 			Common::kPlatformWindows,
-			ADGF_TESTING,
+			ADGF_NO_FLAGS,
 			GUI_OPTIONS_RIVEN
 		},
 		GType_RIVEN,
@@ -419,7 +419,7 @@ static const MohawkGameDescription gameDescriptions[] = {
 			AD_ENTRY1s("a_Data.MHK", "2a840ed74fe5dc3a388bced674d379d5", 12024358),
 			Common::RU_RUS,
 			Common::kPlatformWindows,
-			ADGF_TESTING,
+			ADGF_NO_FLAGS,
 			GUI_OPTIONS_RIVEN
 		},
 		GType_RIVEN,
@@ -436,7 +436,7 @@ static const MohawkGameDescription gameDescriptions[] = {
 			AD_ENTRY1("a_Data.MHK", "59bd2e3ccbae2f1faa1b23a18dc316eb"),
 			Common::RU_RUS,
 			Common::kPlatformWindows,
-			ADGF_TESTING,
+			ADGF_NO_FLAGS,
 			GUI_OPTIONS_RIVEN
 		},
 		GType_RIVEN,
@@ -455,7 +455,7 @@ static const MohawkGameDescription gameDescriptions[] = {
 			AD_ENTRY1s("a_Data.MHK", "3a2b4764979dc007a0e6ded64e4b7889", 10014314),
 			Common::JA_JPN,
 			Common::kPlatformWindows,
-			ADGF_TESTING,
+			ADGF_NO_FLAGS,
 			GUI_OPTIONS_RIVEN
 		},
 		GType_RIVEN,
@@ -473,7 +473,7 @@ static const MohawkGameDescription gameDescriptions[] = {
 			AD_ENTRY1("a_Data.MHK", "08fcaa5d5a2a01d7a5a6960f497212fe"),
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_TESTING,
+			ADGF_NO_FLAGS,
 			GUI_OPTIONS_RIVEN
 		},
 		GType_RIVEN,
@@ -491,7 +491,7 @@ static const MohawkGameDescription gameDescriptions[] = {
 			AD_ENTRY1("a_Data.MHK", "a5fe1c91a6033eb6ee54b287578b74b9"),
 			Common::DE_DEU,
 			Common::kPlatformWindows,
-			ADGF_TESTING,
+			ADGF_NO_FLAGS,
 			GUI_OPTIONS_RIVEN
 		},
 		GType_RIVEN,
@@ -509,7 +509,7 @@ static const MohawkGameDescription gameDescriptions[] = {
 			AD_ENTRY1("a_Data.MHK", "733a710cf5f848b441ec72d988ab8a3d"),
 			Common::PL_POL,
 			Common::kPlatformWindows,
-			ADGF_TESTING,
+			ADGF_NO_FLAGS,
 			GUI_OPTIONS_RIVEN
 		},
 		GType_RIVEN,
@@ -526,7 +526,7 @@ static const MohawkGameDescription gameDescriptions[] = {
 			AD_ENTRY1("a_Data.MHK", "b5f40e6e6b843bf3abea291faa0911f4"),
 			Common::RU_RUS,
 			Common::kPlatformWindows,
-			ADGF_TESTING,
+			ADGF_NO_FLAGS,
 			GUI_OPTIONS_RIVEN
 		},
 		GType_RIVEN,
@@ -544,7 +544,7 @@ static const MohawkGameDescription gameDescriptions[] = {
 			AD_ENTRY1("a_Data.MHK", "bae6b03bd8d6eb350d35fd13f0e3139f"),
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_DEMO | ADGF_TESTING,
+			ADGF_DEMO,
 			GUI_OPTIONS_RIVEN_DEMO
 		},
 		GType_RIVEN,
@@ -2856,7 +2856,7 @@ static const MohawkGameDescription fallbackDescs[] = {
 			AD_ENTRY1(0, 0),
 			Common::UNK_LANG,
 			Common::kPlatformWindows,
-			ADGF_UNSTABLE,
+			ADGF_NO_FLAGS,
 			GUI_OPTIONS_RIVEN
 		},
 		GType_RIVEN,
@@ -2871,7 +2871,7 @@ static const MohawkGameDescription fallbackDescs[] = {
 			AD_ENTRY1(0, 0),
 			Common::UNK_LANG,
 			Common::kPlatformWindows,
-			ADGF_UNSTABLE,
+			ADGF_NO_FLAGS,
 			GUI_OPTIONS_RIVEN
 		},
 		GType_RIVEN,


Commit: 3f42f212d478c84876db3fb240ae18124f9a7b2b
    https://github.com/scummvm/scummvm/commit/3f42f212d478c84876db3fb240ae18124f9a7b2b
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2017-11-02T19:49:43+01:00

Commit Message:
NEWS: Add important Myst bug fixes

Changed paths:
    NEWS


diff --git a/NEWS b/NEWS
index 02e95d7..fa21476 100644
--- a/NEWS
+++ b/NEWS
@@ -57,6 +57,12 @@ For a more comprehensive changelog of the latest experimental code, see:
  MADE:
    - Fixed badly distorted sound (bug #9753).
 
+ MOHAWK:
+   - Added patch to the original data files to correct the vault access
+     instructions in Myst ME.
+   - Fixed situations where Myst could appear to be unresponsive.
+   - Reworked sound handling in Myst to be more accurate.
+
  SCI:
    - Improved startup speed when using the MT-32 emulator.
    - Improved handling of MT-32 reverb in SCI0 games.





More information about the Scummvm-git-logs mailing list