[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