[Scummvm-git-logs] scummvm master -> c731d6c3dd52fd9185d3e28867d4a96e292e2e66
bluegr
bluegr at gmail.com
Thu Sep 2 18:41:19 UTC 2021
This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
74129492ba CINE: Avoid using static objects with destructors
4c93db227a ILLUSIONS: Avoid using static objects with destructors
5f6e65b93b SUPERNOVA: Avoid using static objects with destructors
c731d6c3dd LAB: Avoid using static objects with destructors
Commit: 74129492ba55294ef921440830d1db1d444c420c
https://github.com/scummvm/scummvm/commit/74129492ba55294ef921440830d1db1d444c420c
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2021-09-02T21:41:14+03:00
Commit Message:
CINE: Avoid using static objects with destructors
Changed paths:
engines/cine/cine.cpp
engines/cine/cine.h
engines/cine/prc.cpp
engines/cine/rel.cpp
engines/cine/saveload.cpp
engines/cine/script.h
engines/cine/script_fw.cpp
engines/cine/various.cpp
diff --git a/engines/cine/cine.cpp b/engines/cine/cine.cpp
index 212e082569..7e89369660 100644
--- a/engines/cine/cine.cpp
+++ b/engines/cine/cine.cpp
@@ -126,6 +126,7 @@ Common::Error CineEngine::run() {
delete renderer;
delete[] collisionPage;
+ delete _scriptInfo;
} while (_restartRequested);
delete g_sound;
@@ -176,7 +177,7 @@ void CineEngine::initialize() {
Common::fill(g_cine->_zoneQuery.begin(), g_cine->_zoneQuery.end(), 0);
setDefaultGameSpeed();
- setupOpcodes();
+ _scriptInfo = setupOpcodes();
initLanguage(getLanguage());
diff --git a/engines/cine/cine.h b/engines/cine/cine.h
index 447554c759..a7bc2af2b8 100644
--- a/engines/cine/cine.h
+++ b/engines/cine/cine.h
@@ -184,6 +184,7 @@ public:
*/
ScriptVars _globalVars;
RawScriptArray _scriptTable; ///< Table of script bytecode
+ FWScriptInfo *_scriptInfo;
Common::Array<int16> _zoneData;
Common::Array<uint16> _zoneQuery; ///< Only exists in Operation Stealth
diff --git a/engines/cine/prc.cpp b/engines/cine/prc.cpp
index 553f2f80ac..4d5ed7e6f6 100644
--- a/engines/cine/prc.cpp
+++ b/engines/cine/prc.cpp
@@ -85,7 +85,7 @@ bool loadPrc(const char *pPrcName) {
uint16 size = g_cine->_scriptTable[i]->_size;
// TODO: delete the test?
if (size) {
- g_cine->_scriptTable[i]->setData(*scriptInfo, scriptPtr);
+ g_cine->_scriptTable[i]->setData(*g_cine->_scriptInfo, scriptPtr);
scriptPtr += size;
}
}
diff --git a/engines/cine/rel.cpp b/engines/cine/rel.cpp
index 09b8499618..172ec6c6bf 100644
--- a/engines/cine/rel.cpp
+++ b/engines/cine/rel.cpp
@@ -63,7 +63,7 @@ void loadRel(char *pRelName) {
size = g_cine->_relTable[i]->_size;
// TODO: delete the test?
if (size) {
- g_cine->_relTable[i]->setData(*scriptInfo, ptr);
+ g_cine->_relTable[i]->setData(*g_cine->_scriptInfo, ptr);
ptr += size;
}
}
diff --git a/engines/cine/saveload.cpp b/engines/cine/saveload.cpp
index 9ab8351550..5eccbc8859 100644
--- a/engines/cine/saveload.cpp
+++ b/engines/cine/saveload.cpp
@@ -210,11 +210,11 @@ void loadScriptFromSave(Common::SeekableReadStream &fHandle, bool isGlobal) {
// original code loaded everything into globalScripts, this should be
// the correct behavior
if (isGlobal) {
- ScriptPtr tmp(scriptInfo->create(*g_cine->_scriptTable[idx], idx, labels, localVars, compare, pos));
+ ScriptPtr tmp(g_cine->_scriptInfo->create(*g_cine->_scriptTable[idx], idx, labels, localVars, compare, pos));
assert(tmp);
g_cine->_globalScripts.push_back(tmp);
} else {
- ScriptPtr tmp(scriptInfo->create(*g_cine->_relTable[idx], idx, labels, localVars, compare, pos));
+ ScriptPtr tmp(g_cine->_scriptInfo->create(*g_cine->_relTable[idx], idx, labels, localVars, compare, pos));
assert(tmp);
g_cine->_objectScripts.push_back(tmp);
}
diff --git a/engines/cine/script.h b/engines/cine/script.h
index c088544a42..c4c0c1bed9 100644
--- a/engines/cine/script.h
+++ b/engines/cine/script.h
@@ -367,9 +367,7 @@ typedef Common::Array<RawObjectScriptPtr> RawObjectScriptArray;
#define NUM_MAX_SCRIPT 50
-extern FWScriptInfo *scriptInfo;
-
-void setupOpcodes();
+FWScriptInfo *setupOpcodes();
void decompileScript(const byte *scriptPtr, uint16 scriptSize, uint16 scriptIdx);
void dumpScript(char *dumpName);
diff --git a/engines/cine/script_fw.cpp b/engines/cine/script_fw.cpp
index 25b811ff67..1423c780a0 100644
--- a/engines/cine/script_fw.cpp
+++ b/engines/cine/script_fw.cpp
@@ -206,20 +206,16 @@ void FWScript::setupTable() {
FWScript::_numOpcodes = ARRAYSIZE(opcodeTable);
}
-FWScriptInfo *scriptInfo; ///< Script factory
-
/**
* @todo replace with script subsystem
*/
-void setupOpcodes() {
- static FWScriptInfo fw;
- static OSScriptInfo os;
+FWScriptInfo *setupOpcodes() {
if (g_cine->getGameType() == Cine::GType_FW) {
FWScript::setupTable();
- scriptInfo = &fw;
+ return new FWScriptInfo();
} else {
OSScript::setupTable();
- scriptInfo = &os;
+ return new OSScriptInfo();
}
}
@@ -2015,7 +2011,7 @@ int FWScript::o1_unloadMask5() {
//-----------------------------------------------------------------------
void addScriptToGlobalScripts(uint16 idx) {
- ScriptPtr tmp(scriptInfo->create(*g_cine->_scriptTable[idx], idx));
+ ScriptPtr tmp(g_cine->_scriptInfo->create(*g_cine->_scriptTable[idx], idx));
assert(tmp);
g_cine->_globalScripts.push_back(tmp);
}
diff --git a/engines/cine/various.cpp b/engines/cine/various.cpp
index 85a0d6f47f..80fb98899b 100644
--- a/engines/cine/various.cpp
+++ b/engines/cine/various.cpp
@@ -177,7 +177,7 @@ uint safeControlAccessMinMs() {
}
void runObjectScript(int16 entryIdx) {
- ScriptPtr tmp(scriptInfo->create(*g_cine->_relTable[entryIdx], entryIdx));
+ ScriptPtr tmp(g_cine->_scriptInfo->create(*g_cine->_relTable[entryIdx], entryIdx));
assert(tmp);
g_cine->_objectScripts.push_back(tmp);
}
Commit: 4c93db227a690eadc9a0ccb61ae800c998bed10b
https://github.com/scummvm/scummvm/commit/4c93db227a690eadc9a0ccb61ae800c998bed10b
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2021-09-02T21:41:14+03:00
Commit Message:
ILLUSIONS: Avoid using static objects with destructors
Changed paths:
engines/illusions/bbdou/illusions_bbdou.cpp
engines/illusions/duckman/illusions_duckman.cpp
engines/illusions/illusions.h
engines/illusions/saveload.cpp
diff --git a/engines/illusions/bbdou/illusions_bbdou.cpp b/engines/illusions/bbdou/illusions_bbdou.cpp
index 05b37beed7..d32fcf6a61 100644
--- a/engines/illusions/bbdou/illusions_bbdou.cpp
+++ b/engines/illusions/bbdou/illusions_bbdou.cpp
@@ -668,14 +668,14 @@ void IllusionsEngine_BBDOU::reset() {
void IllusionsEngine_BBDOU::loadSavegameFromScript(int16 slotNum, uint32 callingThreadId) {
// NOTE Just loads the savegame, doesn't activate it yet
- const char *fileName = getSavegameFilename(_savegameSlotNum);
- _loadGameResult = loadgame(fileName);
+ Common::String fileName = getSavegameFilename(_targetName, _savegameSlotNum);
+ _loadGameResult = loadgame(fileName.c_str());
}
void IllusionsEngine_BBDOU::saveSavegameFromScript(int16 slotNum, uint32 callingThreadId) {
// TODO
- // const char *fileName = getSavegameFilename(slotNum);
- _saveGameResult = false;//savegame(fileName, _savegameDescription.c_str());
+ // Common::String fileName = getSavegameFilename(_targetName, slotNum);
+ _saveGameResult = false;//savegame(fileName.c_str(), _savegameDescription.c_str());
}
void IllusionsEngine_BBDOU::activateSavegame(uint32 callingThreadId) {
diff --git a/engines/illusions/duckman/illusions_duckman.cpp b/engines/illusions/duckman/illusions_duckman.cpp
index 0821dfd4e7..ca00241402 100644
--- a/engines/illusions/duckman/illusions_duckman.cpp
+++ b/engines/illusions/duckman/illusions_duckman.cpp
@@ -1278,8 +1278,8 @@ bool IllusionsEngine_Duckman::loadSavegameFromScript(int16 slotNum, uint32 calli
return false; // TODO need to handle reset from new game (without exising savegame).
}
- const char *fileName = getSavegameFilename(_savegameSlotNum);
- bool success = loadgame(fileName);
+ Common::String fileName = getSavegameFilename(_targetName, _savegameSlotNum);
+ bool success = loadgame(fileName.c_str());
if (success)
activateSavegame(callingThreadId);
_gameState->deleteReadStream();
@@ -1287,8 +1287,8 @@ bool IllusionsEngine_Duckman::loadSavegameFromScript(int16 slotNum, uint32 calli
}
bool IllusionsEngine_Duckman::saveSavegameFromScript(int16 slotNum, uint32 callingThreadId) {
- const char *fileName = getSavegameFilename(_savegameSlotNum);
- return savegame(fileName, _savegameDescription.c_str());
+ Common::String fileName = getSavegameFilename(_targetName, _savegameSlotNum);
+ return savegame(fileName.c_str(), _savegameDescription.c_str());
}
void IllusionsEngine_Duckman::activateSavegame(uint32 callingThreadId) {
diff --git a/engines/illusions/illusions.h b/engines/illusions/illusions.h
index 2e2dcfb4d6..34f9816585 100644
--- a/engines/illusions/illusions.h
+++ b/engines/illusions/illusions.h
@@ -229,7 +229,6 @@ public:
Common::Error removeGameState(int slot);
bool savegame(const char *filename, const char *description);
bool loadgame(const char *filename);
- const char *getSavegameFilename(int num);
bool existsSavegame(int num);
static Common::String getSavegameFilename(const Common::String &target, int num);
static kReadSaveHeaderError readSaveHeader(Common::SeekableReadStream *in, SaveHeader &header, bool skipThumbnail = true);
diff --git a/engines/illusions/saveload.cpp b/engines/illusions/saveload.cpp
index f46496abad..a9475a33d4 100644
--- a/engines/illusions/saveload.cpp
+++ b/engines/illusions/saveload.cpp
@@ -126,8 +126,8 @@ bool IllusionsEngine::loadgame(const char *filename) {
Common::Error IllusionsEngine::loadGameState(int slot) {
_resumeFromSavegameRequested = false;
- const char *fileName = getSavegameFilename(slot);
- if (!loadgame(fileName))
+ Common::String fileName = getSavegameFilename(_targetName, slot);
+ if (!loadgame(fileName.c_str()))
return Common::kReadingFailed;
_resumeFromSavegameRequested = true;
_savegameSlotNum = slot;
@@ -135,25 +135,19 @@ Common::Error IllusionsEngine::loadGameState(int slot) {
}
Common::Error IllusionsEngine::saveGameState(int slot, const Common::String &description, bool isAutosave) {
- const char *fileName = getSavegameFilename(slot);
- if (!savegame(fileName, description.c_str()))
+ Common::String fileName = getSavegameFilename(_targetName, slot);
+ if (!savegame(fileName.c_str(), description.c_str()))
return Common::kWritingFailed;
return Common::kNoError;
}
Common::Error IllusionsEngine::removeGameState(int slot) {
Common::SaveFileManager *saveFileMan = g_system->getSavefileManager();
- Common::String filename = Illusions::IllusionsEngine::getSavegameFilename(_targetName, slot);
+ Common::String filename = getSavegameFilename(_targetName, slot);
saveFileMan->removeSavefile(filename.c_str());
return Common::kNoError;
}
-const char *IllusionsEngine::getSavegameFilename(int num) {
- static Common::String filename;
- filename = getSavegameFilename(_targetName, num);
- return filename.c_str();
-}
-
Common::String IllusionsEngine::getSavegameFilename(const Common::String &target, int num) {
assert(num >= 0 && num <= 999);
return Common::String::format("%s.%03d", target.c_str(), num);
Commit: 5f6e65b93beda8f0e2a1f9c70d67e3b9d878cf3b
https://github.com/scummvm/scummvm/commit/5f6e65b93beda8f0e2a1f9c70d67e3b9d878cf3b
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2021-09-02T21:41:14+03:00
Commit Message:
SUPERNOVA: Avoid using static objects with destructors
Changed paths:
engines/supernova/supernova1/state.cpp
diff --git a/engines/supernova/supernova1/state.cpp b/engines/supernova/supernova1/state.cpp
index c75cb00f00..4eda1ba25f 100644
--- a/engines/supernova/supernova1/state.cpp
+++ b/engines/supernova/supernova1/state.cpp
@@ -405,7 +405,7 @@ void GameManager1::corridorOnEntrance() {
}
void GameManager1::telomat(int nr) {
- static Common::String name[8] = {
+ static const char *const name[8] = {
"DR. ALAB HANSI",
"ALAB HANSI",
"SAVAL LUN",
@@ -416,7 +416,7 @@ void GameManager1::telomat(int nr) {
"x"
};
- static Common::String name2[4] = {
+ static const char *const name2[4] = {
"Alab Hansi",
"Saval Lun",
"Ugnul Tschabb",
@@ -506,7 +506,7 @@ void GameManager1::telomat(int nr) {
_vm->removeMessage();
if (_state._nameSeen[nr]) {
Common::String string = _vm->getGameString(kStringTelomat2);
- _vm->setGameString(kStringPlaceholder1, Common::String::format(string.c_str(), name2[nr].c_str()));
+ _vm->setGameString(kStringPlaceholder1, Common::String::format(string.c_str(), name2[nr]));
dial1[1] = kStringPlaceholder1;
_currentRoom->addSentence(1, 1);
} else
Commit: c731d6c3dd52fd9185d3e28867d4a96e292e2e66
https://github.com/scummvm/scummvm/commit/c731d6c3dd52fd9185d3e28867d4a96e292e2e66
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2021-09-02T21:41:14+03:00
Commit Message:
LAB: Avoid using static objects with destructors
Changed paths:
engines/lab/interface.cpp
diff --git a/engines/lab/interface.cpp b/engines/lab/interface.cpp
index bac1155725..9b169b852f 100644
--- a/engines/lab/interface.cpp
+++ b/engines/lab/interface.cpp
@@ -191,9 +191,7 @@ void Interface::mayShowCrumbIndicator() {
return;
if (_vm->_droppingCrumbs && _vm->isMainDisplay()) {
- static byte *imgData = new byte[CRUMBSWIDTH * CRUMBSHEIGHT];
- memcpy(imgData, dropCrumbsImageData, CRUMBSWIDTH * CRUMBSHEIGHT);
- static Image dropCrumbsImage(CRUMBSWIDTH, CRUMBSHEIGHT, imgData, _vm);
+ Image dropCrumbsImage(CRUMBSWIDTH, CRUMBSHEIGHT, dropCrumbsImageData, _vm, false);
dropCrumbsImage.drawMaskImage(612, 4);
}
@@ -231,9 +229,7 @@ void Interface::mayShowCrumbIndicatorOff() {
return;
if (_vm->isMainDisplay()) {
- static byte *imgData = new byte[CRUMBSWIDTH * CRUMBSHEIGHT];
- memcpy(imgData, dropCrumbsOffImageData, CRUMBSWIDTH * CRUMBSHEIGHT);
- static Image dropCrumbsOffImage(CRUMBSWIDTH, CRUMBSHEIGHT, imgData, _vm);
+ Image dropCrumbsOffImage(CRUMBSWIDTH, CRUMBSHEIGHT, dropCrumbsOffImageData, _vm, false);
dropCrumbsOffImage.drawMaskImage(612, 4);
}
More information about the Scummvm-git-logs
mailing list