[Scummvm-git-logs] scummvm master -> 83f5c3d41db9e0ef6fb97dc5fd76df1f1a90e600

bluegr noreply at scummvm.org
Mon Apr 6 20:40:59 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:
83f5c3d41d PLUMBERS: Return an error code if setting the pixel format fails


Commit: 83f5c3d41db9e0ef6fb97dc5fd76df1f1a90e600
    https://github.com/scummvm/scummvm/commit/83f5c3d41db9e0ef6fb97dc5fd76df1f1a90e600
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2026-04-06T23:40:55+03:00

Commit Message:
PLUMBERS: Return an error code if setting the pixel format fails

Changed paths:
    engines/plumbers/3do.cpp
    engines/plumbers/metaengine.cpp
    engines/plumbers/module.mk
    engines/plumbers/plumbers.cpp
    engines/plumbers/plumbers.h
    engines/plumbers/windows.cpp


diff --git a/engines/plumbers/3do.cpp b/engines/plumbers/3do.cpp
index 2b4f7283846..4c1783999c7 100644
--- a/engines/plumbers/3do.cpp
+++ b/engines/plumbers/3do.cpp
@@ -483,14 +483,18 @@ void PlumbersGame3DO::postSceneBitmaps() {
 	_mouseHiLite = getMouseHiLite();
 }
 
-void PlumbersGame3DO::startGraphics() {
+Common::Error PlumbersGame3DO::startGraphics() {
 	_image = new Image::Cel3DODecoder();
 	_ctrlHelpImage = new Image::Cel3DODecoder();
 	_screenW = 320;
 	_screenH = 240;
+	// TODO: Let the backend select the pixel format
 	_targetFormat = Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0);
 
 	initGraphics(_screenW, _screenH, &_targetFormat);
+	if (g_system->getScreenFormat() != _targetFormat)
+		return Common::kUnsupportedColorMode;
+	return Common::kNoError;
 }
 
 void PlumbersGame3DO::blitImage() {
diff --git a/engines/plumbers/metaengine.cpp b/engines/plumbers/metaengine.cpp
index 414d777f2a4..5bb96c8ed00 100644
--- a/engines/plumbers/metaengine.cpp
+++ b/engines/plumbers/metaengine.cpp
@@ -44,14 +44,7 @@ class PlumbersMetaEngine : public AdvancedMetaEngine<ADGameDescription> {
 
 Common::Error PlumbersMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const {
 	if (desc->platform == Common::kPlatform3DO) {
-#ifdef USE_RGB_COLOR
 		*engine = new Plumbers::PlumbersGame3DO(syst, desc);
-#else
-		 // I18N: Plumbers is the title of the game. 3DO is the name of platform
-		GUI::MessageDialog dialog(_("3DO Plumbers requires RGB support."));
-		dialog.runModal();
-		return Common::kUnsupportedColorMode;
-#endif
 	} else
 		*engine = new Plumbers::PlumbersGameWindows(syst, desc);
 	return Common::kNoError;
diff --git a/engines/plumbers/module.mk b/engines/plumbers/module.mk
index 11111cad180..48e505d949b 100644
--- a/engines/plumbers/module.mk
+++ b/engines/plumbers/module.mk
@@ -1,15 +1,12 @@
 MODULE := engines/plumbers
 
 MODULE_OBJS = \
-	plumbers.o \
+	3do.o \
 	console.o \
 	metaengine.o \
+	plumbers.o \
 	windows.o
 
-ifdef USE_RGB_COLOR
-MODULE_OBJS += 3do.o
-endif
-
 # This module can be built as a plugin
 ifeq ($(ENABLE_PLUMBERS), DYNAMIC_PLUGIN)
 PLUGIN := 1
diff --git a/engines/plumbers/plumbers.cpp b/engines/plumbers/plumbers.cpp
index a71877ca657..fe53b69fbf7 100644
--- a/engines/plumbers/plumbers.cpp
+++ b/engines/plumbers/plumbers.cpp
@@ -134,7 +134,9 @@ void PlumbersGame::handleEvent(const Common::Event &event) {
 }
 
 Common::Error PlumbersGame::run() {
-	startGraphics();
+	Common::Error err = startGraphics();
+	if (err.getCode() != Common::kNoError)
+		return err;
 
 	_console = new Console();
 	setDebugger(_console);
diff --git a/engines/plumbers/plumbers.h b/engines/plumbers/plumbers.h
index 4c5aec79a08..db6ff695413 100644
--- a/engines/plumbers/plumbers.h
+++ b/engines/plumbers/plumbers.h
@@ -92,7 +92,7 @@ protected:
 	virtual bool handlePlatformJoyButton(int button) { return false; }
 	virtual bool handlePlatformKeyDown(int button) { return false; }
 	virtual void loadImage(const Common::String &name);
-	virtual void startGraphics() = 0;
+	virtual Common::Error startGraphics() = 0;
 	void blitImageSurface(const Graphics::Surface *surface);
 	virtual void blitImage();
 	virtual void handleEvent(const Common::Event &event);
@@ -164,7 +164,7 @@ public:
 protected:
 	void readTables() override;
 	void postSceneBitmaps() override;
-	void startGraphics() override;
+	Common::Error startGraphics() override;
 	void handleEvent(const Common::Event &event) override;
 	void blitImage() override;
 	int getSceneNumb(const Common::String &sName) override;
@@ -195,7 +195,7 @@ protected:
 	void readTables() override;
 	void postSceneBitmaps() override;
 	void loadImage(const Common::String &name) override;
-	void startGraphics() override;
+	Common::Error startGraphics() override;
 
 private:
 	bool _halfSize;
diff --git a/engines/plumbers/windows.cpp b/engines/plumbers/windows.cpp
index b01c7096b4b..702131319a0 100644
--- a/engines/plumbers/windows.cpp
+++ b/engines/plumbers/windows.cpp
@@ -59,7 +59,7 @@ void PlumbersGameWindows::loadImage(const Common::String &name) {
 	}
 }
 
-void PlumbersGameWindows::startGraphics() {
+Common::Error PlumbersGameWindows::startGraphics() {
 	_image = new Image::BitmapDecoder();
 
 	Graphics::ModeWithFormatList modes = {
@@ -79,6 +79,8 @@ void PlumbersGameWindows::startGraphics() {
 		_screenW = 320;
 		_screenH = 240;
 	}
+
+	return Common::kNoError;
 }
 
 void PlumbersGameWindows::readTables() {




More information about the Scummvm-git-logs mailing list