[Scummvm-git-logs] scummvm master -> 609d89f61319e47b3c05ee65d3b54f92921aabf3
athrxx
noreply at scummvm.org
Sun Apr 5 11:13:43 UTC 2026
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
609d89f613 KYRA: Return an error code if setting the pixel format fails
Commit: 609d89f61319e47b3c05ee65d3b54f92921aabf3
https://github.com/scummvm/scummvm/commit/609d89f61319e47b3c05ee65d3b54f92921aabf3
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2026-04-05T13:13:39+02:00
Commit Message:
KYRA: Return an error code if setting the pixel format fails
Changed paths:
engines/kyra/engine/eobcommon.cpp
engines/kyra/engine/kyra_hof.cpp
engines/kyra/engine/kyra_lok.cpp
engines/kyra/engine/kyra_mr.cpp
engines/kyra/engine/lol.cpp
engines/kyra/graphics/screen.cpp
engines/kyra/graphics/screen.h
engines/kyra/metaengine.cpp
diff --git a/engines/kyra/engine/eobcommon.cpp b/engines/kyra/engine/eobcommon.cpp
index c3ff17a93ef..fd7386a17ec 100644
--- a/engines/kyra/engine/eobcommon.cpp
+++ b/engines/kyra/engine/eobcommon.cpp
@@ -403,7 +403,10 @@ Common::Error EoBCoreEngine::init() {
_screen = new Screen_EoB(this, _system);
assert(_screen);
- _screen->setResolution();
+
+ Common::Error err = _screen->setResolution();
+ if (err.getCode() != Common::kNoError)
+ return err;
_res = new Resource(this);
assert(_res);
@@ -491,7 +494,7 @@ Common::Error EoBCoreEngine::init() {
loadFonts();
- Common::Error err = KyraRpgEngine::init();
+ err = KyraRpgEngine::init();
if (err.getCode() != Common::kNoError)
return err;
diff --git a/engines/kyra/engine/kyra_hof.cpp b/engines/kyra/engine/kyra_hof.cpp
index 92c6dc83bd9..7ab1bde611b 100644
--- a/engines/kyra/engine/kyra_hof.cpp
+++ b/engines/kyra/engine/kyra_hof.cpp
@@ -185,7 +185,10 @@ void KyraEngine_HoF::pauseEngineIntern(bool pause) {
Common::Error KyraEngine_HoF::init() {
_screen = new Screen_HoF(this, _system);
assert(_screen);
- _screen->setResolution();
+
+ Common::Error err = _screen->setResolution();
+ if (err.getCode() != Common::kNoError)
+ return err;
setDebugger(new Debugger_HoF(this));
diff --git a/engines/kyra/engine/kyra_lok.cpp b/engines/kyra/engine/kyra_lok.cpp
index f2331ae7f8f..b1d54702e60 100644
--- a/engines/kyra/engine/kyra_lok.cpp
+++ b/engines/kyra/engine/kyra_lok.cpp
@@ -197,7 +197,10 @@ Common::Error KyraEngine_LoK::init() {
else
_screen = new Screen_LoK(this, _system);
assert(_screen);
- _screen->setResolution();
+
+ Common::Error err = _screen->setResolution();
+ if (err.getCode() != Common::kNoError)
+ return err;
setDebugger(new Debugger_LoK(this));
diff --git a/engines/kyra/engine/kyra_mr.cpp b/engines/kyra/engine/kyra_mr.cpp
index 40cb3436463..c5b0120ea8a 100644
--- a/engines/kyra/engine/kyra_mr.cpp
+++ b/engines/kyra/engine/kyra_mr.cpp
@@ -218,7 +218,10 @@ KyraEngine_MR::~KyraEngine_MR() {
Common::Error KyraEngine_MR::init() {
_screen = new Screen_MR(this, _system);
assert(_screen);
- _screen->setResolution();
+
+ Common::Error err = _screen->setResolution();
+ if (err.getCode() != Common::kNoError)
+ return err;
setDebugger(new Debugger_v2(this));
diff --git a/engines/kyra/engine/lol.cpp b/engines/kyra/engine/lol.cpp
index 44fbb1bbf20..9094a563db5 100644
--- a/engines/kyra/engine/lol.cpp
+++ b/engines/kyra/engine/lol.cpp
@@ -384,7 +384,10 @@ GUI *LoLEngine::gui() const {
Common::Error LoLEngine::init() {
_screen = new Screen_LoL(this, _system);
assert(_screen);
- _screen->setResolution();
+
+ Common::Error err = _screen->setResolution();
+ if (err.getCode() != Common::kNoError)
+ return err;
setDebugger(new Debugger_LoL(this));
diff --git a/engines/kyra/graphics/screen.cpp b/engines/kyra/graphics/screen.cpp
index 0f80c637685..aacdc0a02c9 100644
--- a/engines/kyra/graphics/screen.cpp
+++ b/engines/kyra/graphics/screen.cpp
@@ -287,15 +287,20 @@ bool Screen::enableScreenDebug(bool enable) {
if (_debugEnabled != enable) {
_debugEnabled = enable;
- setResolution();
- _forceFullUpdate = true;
- updateScreen();
+
+ Common::Error err = setResolution();
+ if (err.getCode() != Common::kNoError){
+ _debugEnabled = enable;
+ } else {
+ _forceFullUpdate = true;
+ updateScreen();
+ }
}
return temp;
}
-void Screen::setResolution() {
+Common::Error Screen::setResolution() {
byte palette[3 * 256];
if (!_useHiColorScreen)
_system->getPaletteManager()->grabPalette(palette, 0, 256);
@@ -333,12 +338,14 @@ void Screen::setResolution() {
}
initGraphics(width, height, tryModes);
if (_system->getScreenFormat().bytesPerPixel != 2)
- error("Required graphics mode not supported by platform.");
+ return Common::kUnsupportedColorMode;
} else {
initGraphics(width, height);
_system->getPaletteManager()->setPalette(palette, 0, 256);
}
+
+ return Common::kNoError;
}
void Screen::enableHiColorMode(bool enabled) {
diff --git a/engines/kyra/graphics/screen.h b/engines/kyra/graphics/screen.h
index c1bc073210c..083d8b328bf 100644
--- a/engines/kyra/graphics/screen.h
+++ b/engines/kyra/graphics/screen.h
@@ -30,6 +30,7 @@
#include "common/rendermode.h"
#include "common/stream.h"
#include "common/ptr.h"
+#include "common/error.h"
class OSystem;
@@ -640,7 +641,7 @@ public:
// init
virtual bool init();
- virtual void setResolution();
+ virtual Common::Error setResolution();
virtual void enableHiColorMode(bool enabled);
// refresh
diff --git a/engines/kyra/metaengine.cpp b/engines/kyra/metaengine.cpp
index 8683a144f08..525ad6d833e 100644
--- a/engines/kyra/metaengine.cpp
+++ b/engines/kyra/metaengine.cpp
@@ -256,10 +256,6 @@ Common::Error KyraMetaEngine::createInstance(OSystem *syst, Engine **engine, con
flags.lang = Common::EN_ANY;
}
-#ifndef USE_RGB_COLOR
- flags.useHiColorMode = false;
-#endif
-
switch (flags.gameID) {
case Kyra::GI_KYRA1:
*engine = new Kyra::KyraEngine_LoK(syst, flags);
@@ -285,8 +281,6 @@ Common::Error KyraMetaEngine::createInstance(OSystem *syst, Engine **engine, con
case Kyra::GI_EOB2:
if (Common::parseRenderMode(ConfMan.get("render_mode")) == Common::kRenderEGA)
flags.useHiRes = true;
- if (platform == Common::kPlatformFMTowns && !flags.useHiColorMode)
- return Common::Error(Common::kUnsupportedColorMode, _s("EOB II FM-TOWNS requires support of 16bit color modes which has not been activated in your ScummVM build"));
*engine = new Kyra::DarkMoonEngine(syst, flags);
break;
#else
More information about the Scummvm-git-logs
mailing list