[Scummvm-git-logs] scummvm master -> 939570b25a0744cf3d63cad149ab85e95c9dac06

lephilousophe noreply at scummvm.org
Sun Oct 9 09:05:38 UTC 2022


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:
1b0942cda2 BACKENDS: OPENGL: Correctly compute default scales
939570b25a BACKENDS: OPENGL: More tolerant integer parsing


Commit: 1b0942cda2dd8ba60cfaedd9f394867af492d1ac
    https://github.com/scummvm/scummvm/commit/1b0942cda2dd8ba60cfaedd9f394867af492d1ac
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2022-10-09T11:05:13+02:00

Commit Message:
BACKENDS: OPENGL: Correctly compute default scales

Changed paths:
    backends/graphics/opengl/pipelines/libretro/parser.cpp


diff --git a/backends/graphics/opengl/pipelines/libretro/parser.cpp b/backends/graphics/opengl/pipelines/libretro/parser.cpp
index 321c67d6a09..5e3b602c896 100644
--- a/backends/graphics/opengl/pipelines/libretro/parser.cpp
+++ b/backends/graphics/opengl/pipelines/libretro/parser.cpp
@@ -72,6 +72,7 @@ private:
 	bool parsePass(const uint id, const bool isLast);
 	bool parsePassScaleType(const uint id, const bool isLast, ShaderPass *pass);
 	bool parsePassScale(const uint id, ShaderPass *pass);
+	bool computeDefaultScale(const Common::String &key, float *floatValue, uint *uintValue, const ScaleType scaleType);
 
 	typedef Common::HashMap<Common::String, Common::String> StringMap;
 	StringMap _entries;
@@ -264,26 +265,6 @@ bool PresetParser::lookUpValue(const Common::String &key, ScaleType *value, cons
 }
 
 bool PresetParser::lookUpValueScale(const Common::String &key, float *floatValue, uint *uintValue, const ScaleType scaleType) {
-	if (!_entries.contains(key)) {
-		switch (scaleType) {
-		case kScaleTypeSource:
-		case kScaleTypeViewport:
-			*floatValue = 1.0f;
-			return true;
-
-		case kScaleTypeAbsolute:
-			_errorDesc = "No value specified for scale '" + key + '\'';
-			return false;
-
-		case kScaleTypeFull:
-			return true;
-
-		default:
-			_errorDesc = "Internal Error: Invalid scale type";
-			return false;
-		}
-	}
-
 	switch (scaleType) {
 	case kScaleTypeSource:
 	case kScaleTypeViewport:
@@ -441,18 +422,46 @@ bool PresetParser::parsePassScale(const uint id, ShaderPass *pass) {
 		if (!lookUpValueScale(passKey("scale_x"), &pass->scaleXFloat, &pass->scaleXUint, pass->scaleTypeX)) {
 			return false;
 		}
+	} else {
+		if (!computeDefaultScale(passKey("scale_x"), &pass->scaleXFloat, &pass->scaleXUint, pass->scaleTypeX)) {
+			return false;
+		}
 	}
 
 	if (_entries.contains(passKey("scale_y"))) {
 		if (!lookUpValueScale(passKey("scale_y"), &pass->scaleYFloat, &pass->scaleYUint, pass->scaleTypeY)) {
 			return false;
 		}
+	} else {
+		if (!computeDefaultScale(passKey("scale_y"), &pass->scaleYFloat, &pass->scaleYUint, pass->scaleTypeY)) {
+			return false;
+		}
 	}
 
 	return true;
 }
 #undef passKey
 
+bool PresetParser::computeDefaultScale(const Common::String &key, float *floatValue, uint *uintValue, const ScaleType scaleType) {
+	switch (scaleType) {
+		case kScaleTypeSource:
+		case kScaleTypeViewport:
+			*floatValue = 1.0f;
+			return true;
+
+		case kScaleTypeAbsolute:
+			_errorDesc = "No value specified for scale '" + key + '\'';
+			return false;
+
+		case kScaleTypeFull:
+			return true;
+
+		default:
+			_errorDesc = "Internal Error: Invalid scale type";
+			return false;
+	}
+}
+
 ShaderPreset *parsePreset(const Common::FSNode &shaderPreset) {
 	if (!shaderPreset.exists() || !shaderPreset.isReadable() || shaderPreset.isDirectory()) {
 		warning("LibRetro Preset Parsing: No such readable file '%s'", shaderPreset.getName().c_str());


Commit: 939570b25a0744cf3d63cad149ab85e95c9dac06
    https://github.com/scummvm/scummvm/commit/939570b25a0744cf3d63cad149ab85e95c9dac06
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2022-10-09T11:05:13+02:00

Commit Message:
BACKENDS: OPENGL: More tolerant integer parsing

Changed paths:
    backends/graphics/opengl/pipelines/libretro/parser.cpp


diff --git a/backends/graphics/opengl/pipelines/libretro/parser.cpp b/backends/graphics/opengl/pipelines/libretro/parser.cpp
index 5e3b602c896..1e1d7aae7a0 100644
--- a/backends/graphics/opengl/pipelines/libretro/parser.cpp
+++ b/backends/graphics/opengl/pipelines/libretro/parser.cpp
@@ -194,10 +194,15 @@ bool PresetParser::lookUpValue(const Common::String &key, uint *value) {
 	if (iter != _entries.end()) {
 		char *endptr;
 		const long uintVal = strtol(iter->_value.c_str(), &endptr, 0);
-		if (*endptr != '\0' || uintVal >= UINT_MAX || uintVal < 0) {
+		// Original libretro is quite laxist with int values and only checks errno
+		// This means that as long as there is some number at start, parsing won't fail
+		if (endptr == iter->_value.c_str() || uintVal >= UINT_MAX || uintVal < 0) {
 			_errorDesc = "Invalid unsigned integer value for key '" + key + "': '" + iter->_value + '\'';
 			return false;
 		} else {
+			if (*endptr != '\0') {
+				warning("Possibly invalid unsigned integer value for key '%s': '%s'", key.c_str(), iter->_value.c_str());
+			}
 			*value = uintVal;
 			return true;
 		}




More information about the Scummvm-git-logs mailing list