[Scummvm-git-logs] scummvm master -> 1734e7c40bfe2dd856c72061d94973c8e28dcbcd

sev- sev at scummvm.org
Thu Jun 18 22:50:56 UTC 2020


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

Summary:
c55b33b975 WINTERMUTE: Move store/delete _cachedThumbnail to methods
5bb603dd9e WINTERMUTE: Delete _cachedThumbnail on cleanup
1734e7c40b WINTERMUTE: Add save thumbnails to Corrosion


Commit: c55b33b9756880f2650ec070f31c5868c2ab9c17
    https://github.com/scummvm/scummvm/commit/c55b33b9756880f2650ec070f31c5868c2ab9c17
Author: lolbot-iichan (lolbot_iichan at mail.ru)
Date: 2020-06-19T00:50:51+02:00

Commit Message:
WINTERMUTE: Move store/delete _cachedThumbnail to methods

Changed paths:
    engines/wintermute/base/base_game.cpp
    engines/wintermute/base/base_game.h


diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp
index 798a2bc305..6f47ae8e51 100644
--- a/engines/wintermute/base/base_game.cpp
+++ b/engines/wintermute/base/base_game.cpp
@@ -1931,16 +1931,7 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
 	//////////////////////////////////////////////////////////////////////////
 	else if (strcmp(name, "StoreSaveThumbnail") == 0) {
 		stack->correctParams(0);
-		delete _cachedThumbnail;
-		_cachedThumbnail = new SaveThumbHelper(this);
-		if (DID_FAIL(_cachedThumbnail->storeThumbnail())) {
-			delete _cachedThumbnail;
-			_cachedThumbnail = nullptr;
-			stack->pushBool(false);
-		} else {
-			stack->pushBool(true);
-		}
-
+		stack->pushBool(storeSaveThumbnail());
 		return STATUS_OK;
 	}
 
@@ -1949,10 +1940,8 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
 	//////////////////////////////////////////////////////////////////////////
 	else if (strcmp(name, "DeleteSaveThumbnail") == 0) {
 		stack->correctParams(0);
-		delete _cachedThumbnail;
-		_cachedThumbnail = nullptr;
+		deleteSaveThumbnail();
 		stack->pushNULL();
-
 		return STATUS_OK;
 	}
 
@@ -4080,6 +4069,23 @@ bool BaseGame::drawCursor(BaseSprite *cursor) {
 	return cursor->draw(_mousePos.x, _mousePos.y);
 }
 
+//////////////////////////////////////////////////////////////////////////
+bool BaseGame::storeSaveThumbnail() {
+	delete _cachedThumbnail;
+	_cachedThumbnail = new SaveThumbHelper(this);
+	if (DID_FAIL(_cachedThumbnail->storeThumbnail())) {
+		deleteSaveThumbnail();
+		return false;
+	}
+	return true;
+}
+
+//////////////////////////////////////////////////////////////////////////
+void BaseGame::deleteSaveThumbnail() {
+	delete _cachedThumbnail;
+	_cachedThumbnail = nullptr;
+}
+
 
 //////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////
diff --git a/engines/wintermute/base/base_game.h b/engines/wintermute/base/base_game.h
index 7e3c230a21..4d057dffab 100644
--- a/engines/wintermute/base/base_game.h
+++ b/engines/wintermute/base/base_game.h
@@ -259,6 +259,8 @@ public:
 	bool setActiveObject(BaseObject *Obj);
 	BaseSprite *_lastCursor;
 	bool drawCursor(BaseSprite *Cursor);
+	bool storeSaveThumbnail();
+	void deleteSaveThumbnail();
 
 	SaveThumbHelper *_cachedThumbnail;
 	void addMem(int32 bytes);


Commit: 5bb603dd9e07cdba43db56390a5971287d1fc100
    https://github.com/scummvm/scummvm/commit/5bb603dd9e07cdba43db56390a5971287d1fc100
Author: lolbot-iichan (lolbot_iichan at mail.ru)
Date: 2020-06-19T00:50:51+02:00

Commit Message:
WINTERMUTE: Delete _cachedThumbnail on cleanup

Changed paths:
    engines/wintermute/base/base_game.cpp


diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp
index 6f47ae8e51..1b54365a71 100644
--- a/engines/wintermute/base/base_game.cpp
+++ b/engines/wintermute/base/base_game.cpp
@@ -246,8 +246,6 @@ BaseGame::~BaseGame() {
 
 	cleanup();
 
-	delete _cachedThumbnail;
-
 	delete _mathClass;
 	delete _directoryClass;
 
@@ -264,8 +262,6 @@ BaseGame::~BaseGame() {
 	delete _musicSystem;
 	delete _settings;
 
-	_cachedThumbnail = nullptr;
-
 	_mathClass = nullptr;
 	_directoryClass = nullptr;
 
@@ -296,6 +292,8 @@ bool BaseGame::cleanup() {
 	delete _loadingIcon;
 	_loadingIcon = nullptr;
 
+	deleteSaveThumbnail();
+
 	_engineLogCallback = nullptr;
 	_engineLogCallbackData = nullptr;
 


Commit: 1734e7c40bfe2dd856c72061d94973c8e28dcbcd
    https://github.com/scummvm/scummvm/commit/1734e7c40bfe2dd856c72061d94973c8e28dcbcd
Author: lolbot-iichan (lolbot_iichan at mail.ru)
Date: 2020-06-19T00:50:51+02:00

Commit Message:
WINTERMUTE: Add save thumbnails to Corrosion

Changed paths:
    engines/wintermute/ad/ad_game.cpp
    engines/wintermute/base/base_game.cpp


diff --git a/engines/wintermute/ad/ad_game.cpp b/engines/wintermute/ad/ad_game.cpp
index a6730feecd..eb99c4f9da 100644
--- a/engines/wintermute/ad/ad_game.cpp
+++ b/engines/wintermute/ad/ad_game.cpp
@@ -415,6 +415,17 @@ bool AdGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
 		stack->correctParams(1);
 		ScValue *val = stack->pop();
 		AdObject *obj = (AdObject *)val->getNative();
+
+		// HACK: We take corrosion screenshot before entering main menu
+		// Unused screenshots must be deleted, after main menu is closed
+		if (obj && BaseEngine::instance().getGameId() == "corrosion") {
+			const char *mm = "interface\\system\\mainmenu.window";
+			const char *fn = obj->getFilename();
+			if (fn && strcmp(fn, mm) == 0) {
+				deleteSaveThumbnail();
+			}
+		}
+
 		removeObject(obj);
 		if (val->getType() == VAL_VARIABLE_REF) {
 			val->setNULL();
diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp
index 1b54365a71..b66c5f469b 100644
--- a/engines/wintermute/base/base_game.cpp
+++ b/engines/wintermute/base/base_game.cpp
@@ -1624,6 +1624,13 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
 		byte blue = stack->pop()->getInt(0);
 		byte alpha = stack->pop()->getInt(0xFF);
 
+		// HACK: Corrosion fades screen to black while opening main menu
+		// Thus, we get black screenshots when saving game from in-game menus
+		// Let's take & keep screenshot before entering main menu
+		if (duration == 750 && BaseEngine::instance().getGameId() == "corrosion") {
+			storeSaveThumbnail();
+		}
+
 		bool system = (strcmp(name, "SystemFadeOut") == 0 || strcmp(name, "SystemFadeOutAsync") == 0);
 
 		_fader->fadeOut(BYTETORGBA(red, green, blue, alpha), duration, system);




More information about the Scummvm-git-logs mailing list