[Scummvm-git-logs] scummvm master -> 6ae964bb61f36e732df6af1f93e0172fb56c1fe1
sev-
noreply at scummvm.org
Sun Mar 5 22:19:50 UTC 2023
This automated email contains information about 11 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
252fb66539 ENGINES: Revert setting _saveType value based on slot type
142ad94149 ENGINES: Rename initSaveType() method (#6)
2868b74e30 ENGINES: Use slot test to test where save is stored
201bed6634 CINE: Use slot test to test where save is stored
1c91baab78 SCI: Use slot test to test where save is stored
95c542e713 ENGINES: Clarify configuration of autosave slot
159f554d20 ENGINES: Improve management of empty autosave slot
8906a0c4a9 ENGINES: Fix invalid double-quote symbols
d507ce499f ENGINES: Allow warning dialog to delete existing save file
414facb1cb ENGINES: Add user support only when autosaving is enabled
6ae964bb61 ENGINES: Remove all user access to autosave slot
Commit: 252fb665396a89eb7786db95b30e13f84a6dfa54
https://github.com/scummvm/scummvm/commit/252fb665396a89eb7786db95b30e13f84a6dfa54
Author: macca8 (brugenerol at tpg.com.au)
Date: 2023-03-05T23:19:40+01:00
Commit Message:
ENGINES: Revert setting _saveType value based on slot type
The saveType property is intended to identify the type of save stored in the autosave slot. Setting the saveType property based on slot type identifies any type of save stored in the autosave slot as an autosave. It's therefore inappropriate for identifying the actual type of save in the slot
Reverting the method prevents an autosave from overwriting a regular save without warning (fixes [#13841](https://bugs.scummvm.org/ticket/13841)).
Changed paths:
engines/savestate.cpp
diff --git a/engines/savestate.cpp b/engines/savestate.cpp
index 0b730ca827d..369336dd054 100644
--- a/engines/savestate.cpp
+++ b/engines/savestate.cpp
@@ -35,12 +35,12 @@ SaveStateDescriptor::SaveStateDescriptor()
}
SaveStateDescriptor::SaveStateDescriptor(const MetaEngine *metaEngine, int slot, const Common::U32String &d)
- : _slot(slot), _description(d), _isLocked(false), _playTimeMSecs(0) {
+ : _slot(slot), _description(d), _isLocked(false), _playTimeMSecs(0), _saveType(kSaveTypeUndetermined) {
initSaveType(metaEngine);
}
SaveStateDescriptor::SaveStateDescriptor(const MetaEngine *metaEngine, int slot, const Common::String &d)
- : _slot(slot), _description(Common::U32String(d)), _isLocked(false), _playTimeMSecs(0) {
+ : _slot(slot), _description(Common::U32String(d)), _isLocked(false), _playTimeMSecs(0), _saveType(kSaveTypeUndetermined) {
initSaveType(metaEngine);
}
@@ -51,7 +51,6 @@ void SaveStateDescriptor::initSaveType(const MetaEngine *metaEngine) {
const bool autosave =
metaEngine && ConfMan.getInt("autosave_period") && _slot == metaEngine->getAutosaveSlot();
_isWriteProtected = autosave;
- _saveType = autosave ? kSaveTypeAutosave : kSaveTypeRegular;
_isDeletable = !autosave;
}
Commit: 142ad9414921f549c6581b71279ac4ea97954d67
https://github.com/scummvm/scummvm/commit/142ad9414921f549c6581b71279ac4ea97954d67
Author: macca8 (brugenerol at tpg.com.au)
Date: 2023-03-05T23:19:40+01:00
Commit Message:
ENGINES: Rename initSaveType() method (#6)
Rename method to match its purpose.
Changed paths:
engines/savestate.cpp
engines/savestate.h
diff --git a/engines/savestate.cpp b/engines/savestate.cpp
index 369336dd054..0826bf71cb7 100644
--- a/engines/savestate.cpp
+++ b/engines/savestate.cpp
@@ -36,15 +36,15 @@ SaveStateDescriptor::SaveStateDescriptor()
SaveStateDescriptor::SaveStateDescriptor(const MetaEngine *metaEngine, int slot, const Common::U32String &d)
: _slot(slot), _description(d), _isLocked(false), _playTimeMSecs(0), _saveType(kSaveTypeUndetermined) {
- initSaveType(metaEngine);
+ initSaveSlot(metaEngine);
}
SaveStateDescriptor::SaveStateDescriptor(const MetaEngine *metaEngine, int slot, const Common::String &d)
: _slot(slot), _description(Common::U32String(d)), _isLocked(false), _playTimeMSecs(0), _saveType(kSaveTypeUndetermined) {
- initSaveType(metaEngine);
+ initSaveSlot(metaEngine);
}
-void SaveStateDescriptor::initSaveType(const MetaEngine *metaEngine) {
+void SaveStateDescriptor::initSaveSlot(const MetaEngine *metaEngine) {
// Do not allow auto-save slot to be deleted or overwritten.
if (!metaEngine && g_engine)
metaEngine = g_engine->getMetaEngine();
diff --git a/engines/savestate.h b/engines/savestate.h
index 109f53e3b7a..93bda7868fd 100644
--- a/engines/savestate.h
+++ b/engines/savestate.h
@@ -61,7 +61,7 @@ private:
kSaveTypeAutosave
};
- void initSaveType(const MetaEngine *metaEngine);
+ void initSaveSlot(const MetaEngine *metaEngine);
public:
SaveStateDescriptor();
SaveStateDescriptor(const MetaEngine *metaEngine, int slot, const Common::U32String &d);
Commit: 2868b74e30a4287fbceccc1d178c720a0e016966
https://github.com/scummvm/scummvm/commit/2868b74e30a4287fbceccc1d178c720a0e016966
Author: macca8 (brugenerol at tpg.com.au)
Date: 2023-03-05T23:19:40+01:00
Commit Message:
ENGINES: Use slot test to test where save is stored
Also reinstated desc.setAutosave(header.isAutosave) call in querySaveMetaInfos().
These changes are simply a reversion of the relevant changes made in #3261, including any subsequent changes since then.
Changed paths:
engines/metaengine.cpp
diff --git a/engines/metaengine.cpp b/engines/metaengine.cpp
index b1a8b05eacb..63b867fb10c 100644
--- a/engines/metaengine.cpp
+++ b/engines/metaengine.cpp
@@ -378,9 +378,11 @@ SaveStateList MetaEngine::listSaves(const char *target, bool saveMode) const {
// Check to see if an autosave is present
for (SaveStateList::iterator it = saveList.begin(); it != saveList.end(); ++it) {
- // It has an autosave
- if (it->isAutosave())
+ int slot = it->getSaveSlot();
+ if (slot == autosaveSlot) {
+ // It has an autosave
return saveList;
+ }
}
// No autosave yet. We want to add a dummy one in so that it can be marked as
@@ -436,6 +438,7 @@ SaveStateDescriptor MetaEngine::querySaveMetaInfos(const char *target, int slot)
SaveStateDescriptor desc(this, slot, Common::U32String());
parseSavegameHeader(&header, &desc);
desc.setThumbnail(header.thumbnail);
+ desc.setAutosave(header.isAutosave);
return desc;
}
Commit: 201bed66341bfda610742807ab398066570b45b3
https://github.com/scummvm/scummvm/commit/201bed66341bfda610742807ab398066570b45b3
Author: macca8 (brugenerol at tpg.com.au)
Date: 2023-03-05T23:19:40+01:00
Commit Message:
CINE: Use slot test to test where save is stored
As an interim measure, also reinstate the setAutosave(true) call in querySaveMetaInfos() for the dummy autosave, though I suspect the call to create the dummy autosave should only appear in listSaves(), since there's no save file attached for autosave testing, so no possible data loss (potential fix [#13432](https://bugs.scummvm.org/ticket/13432)).
Changed paths:
engines/cine/metaengine.cpp
diff --git a/engines/cine/metaengine.cpp b/engines/cine/metaengine.cpp
index 6a5af025082..b6bf983af78 100644
--- a/engines/cine/metaengine.cpp
+++ b/engines/cine/metaengine.cpp
@@ -154,14 +154,14 @@ SaveStateList CineMetaEngine::listSaves(const char *target) const {
SaveStateDescriptor saveStateDesc(this, slotNum, saveDesc);
if (saveStateDesc.getDescription().empty()) {
- if (saveStateDesc.isAutosave()) {
+ if (slotNum == getAutosaveSlot()) {
saveStateDesc.setDescription(_("Unnamed autosave"));
} else {
saveStateDesc.setDescription(_("Unnamed savegame"));
}
}
- if (saveStateDesc.isAutosave()) {
+ if (slotNum == getAutosaveSlot()) {
foundAutosave = true;
}
@@ -237,7 +237,9 @@ SaveStateDescriptor CineMetaEngine::querySaveMetaInfos(const char *target, int s
// No saving on empty autosave slot
if (slot == getAutosaveSlot()) {
- return SaveStateDescriptor(this, slot, _("Empty autosave"));
+ SaveStateDescriptor desc(this, slot, _("Empty autosave"));
+ desc.setAutosave(true);
+ return desc;
}
return SaveStateDescriptor();
Commit: 1c91baab78498becb85d32c6376372be4207ec98
https://github.com/scummvm/scummvm/commit/1c91baab78498becb85d32c6376372be4207ec98
Author: macca8 (brugenerol at tpg.com.au)
Date: 2023-03-05T23:19:40+01:00
Commit Message:
SCI: Use slot test to test where save is stored
Properly detects if a save is stored in the autosave slot, preventing an overwrite by the dummy autosave, even though ScummVM autosave support is currently revoked.
Changed paths:
engines/sci/metaengine.cpp
diff --git a/engines/sci/metaengine.cpp b/engines/sci/metaengine.cpp
index 2e16f2c4e2b..84b8b541670 100644
--- a/engines/sci/metaengine.cpp
+++ b/engines/sci/metaengine.cpp
@@ -355,7 +355,8 @@ SaveStateList SciMetaEngine::listSaves(const char *target) const {
}
SaveStateDescriptor descriptor(this, slotNr, meta.name);
- if (descriptor.isAutosave()) {
+ if (slotNr == 0) {
+ // ScummVM auto-save slot (note however, that autosave support is currently revoked)
hasAutosave = true;
}
Commit: 95c542e71345224c6d2bc991d23b33437f3b3508
https://github.com/scummvm/scummvm/commit/95c542e71345224c6d2bc991d23b33437f3b3508
Author: macca8 (brugenerol at tpg.com.au)
Date: 2023-03-05T23:19:40+01:00
Commit Message:
ENGINES: Clarify configuration of autosave slot
Establishes the relationship between the autosave slot and the current autosave status.
Changed paths:
engines/savestate.cpp
diff --git a/engines/savestate.cpp b/engines/savestate.cpp
index 0826bf71cb7..42565bdb819 100644
--- a/engines/savestate.cpp
+++ b/engines/savestate.cpp
@@ -45,13 +45,19 @@ SaveStateDescriptor::SaveStateDescriptor(const MetaEngine *metaEngine, int slot,
}
void SaveStateDescriptor::initSaveSlot(const MetaEngine *metaEngine) {
- // Do not allow auto-save slot to be deleted or overwritten.
if (!metaEngine && g_engine)
metaEngine = g_engine->getMetaEngine();
- const bool autosave =
- metaEngine && ConfMan.getInt("autosave_period") && _slot == metaEngine->getAutosaveSlot();
- _isWriteProtected = autosave;
- _isDeletable = !autosave;
+ int autosaveSlot = metaEngine ? metaEngine->getAutosaveSlot() : -1;
+
+ if (autosaveSlot >= 0 && _slot == autosaveSlot) {
+ const bool autosaveEnabled = ConfMan.getInt("autosave_period");
+ // If autosaving enabled, do not allow autosave slot to be deleted or overwritten
+ _isWriteProtected = autosaveEnabled;
+ _isDeletable = !autosaveEnabled;
+ } else {
+ _isWriteProtected = false;
+ _isDeletable = true;
+ }
}
void SaveStateDescriptor::setThumbnail(Graphics::Surface *t) {
Commit: 159f554d20fc239159d01b9063a26b8d520026fd
https://github.com/scummvm/scummvm/commit/159f554d20fc239159d01b9063a26b8d520026fd
Author: macca8 (brugenerol at tpg.com.au)
Date: 2023-03-05T23:19:40+01:00
Commit Message:
ENGINES: Improve management of empty autosave slot
Addresses a vulnerability where the autosave slot may present as a regular empty slot when autosaving is disabled.
By default, an empty autosave slot will always:
- be identified by a dummy autosave.
- display the current autosave state.
- remain clear until an autosave creates the autosave file.
Changed paths:
engines/metaengine.cpp
diff --git a/engines/metaengine.cpp b/engines/metaengine.cpp
index 63b867fb10c..01e30d879f2 100644
--- a/engines/metaengine.cpp
+++ b/engines/metaengine.cpp
@@ -372,7 +372,7 @@ SaveStateList MetaEngine::listSaves(const char *target) const {
SaveStateList MetaEngine::listSaves(const char *target, bool saveMode) const {
SaveStateList saveList = listSaves(target);
- int autosaveSlot = ConfMan.getInt("autosave_period") ? getAutosaveSlot() : -1;
+ int autosaveSlot = getAutosaveSlot();
if (!saveMode || autosaveSlot == -1)
return saveList;
@@ -387,7 +387,11 @@ SaveStateList MetaEngine::listSaves(const char *target, bool saveMode) const {
// No autosave yet. We want to add a dummy one in so that it can be marked as
// write protected, and thus be prevented from being saved in
- SaveStateDescriptor desc(this, autosaveSlot, _("Autosave"));
+ const Common::U32String &dummyAutosave = ConfMan.getInt("autosave_periodâ) ? _(âAutosave onâ) : _(âAutosave offâ);
+ SaveStateDescriptor desc(this, autosaveSlot, dummyAutosave);
+ desc.setWriteProtectedFlag(true);
+ desc.setDeletableFlag(false);
+
saveList.push_back(desc);
Common::sort(saveList.begin(), saveList.end(), SaveStateDescriptorSlotComparator());
Commit: 8906a0c4a99673954d2729dc10ac8f2e6442d616
https://github.com/scummvm/scummvm/commit/8906a0c4a99673954d2729dc10ac8f2e6442d616
Author: macca8 (brugenerol at tpg.com.au)
Date: 2023-03-05T23:19:40+01:00
Commit Message:
ENGINES: Fix invalid double-quote symbols
Changed paths:
engines/metaengine.cpp
diff --git a/engines/metaengine.cpp b/engines/metaengine.cpp
index 01e30d879f2..54e08832ce2 100644
--- a/engines/metaengine.cpp
+++ b/engines/metaengine.cpp
@@ -387,7 +387,7 @@ SaveStateList MetaEngine::listSaves(const char *target, bool saveMode) const {
// No autosave yet. We want to add a dummy one in so that it can be marked as
// write protected, and thus be prevented from being saved in
- const Common::U32String &dummyAutosave = ConfMan.getInt("autosave_periodâ) ? _(âAutosave onâ) : _(âAutosave offâ);
+ const Common::U32String &dummyAutosave = (ConfMan.getInt("autosave_period") ? _("Autosave on") : _("Autosave off"));
SaveStateDescriptor desc(this, autosaveSlot, dummyAutosave);
desc.setWriteProtectedFlag(true);
desc.setDeletableFlag(false);
Commit: d507ce499fddb908c6452bf7dcbc8e48a47d7348
https://github.com/scummvm/scummvm/commit/d507ce499fddb908c6452bf7dcbc8e48a47d7348
Author: macca8 (brugenerol at tpg.com.au)
Date: 2023-03-05T23:19:40+01:00
Commit Message:
ENGINES: Allow warning dialog to delete existing save file
Presents the autosave with an empty autosave slot after a successful move, or when the Delete option is chosen.
Avoids potential renaming issues for engines which may not allow an existing save file to be renamed.
Changed paths:
engines/engine.cpp
diff --git a/engines/engine.cpp b/engines/engine.cpp
index b295e90d43f..5db870d7a33 100644
--- a/engines/engine.cpp
+++ b/engines/engine.cpp
@@ -585,26 +585,29 @@ bool Engine::warnBeforeOverwritingAutosave() {
if (!desc.isValid() || desc.isAutosave())
return true;
Common::U32StringArray altButtons;
- altButtons.push_back(_("Overwrite"));
- altButtons.push_back(_("Cancel autosave"));
+ altButtons.push_back(_("Delete"));
+ altButtons.push_back(_("Skip autosave"));
const Common::U32String message = Common::U32String::format(
- _("WARNING: The autosave slot has a saved game named %S. "
- "You can either move the existing save to a new slot, "
- "Overwrite the existing save, "
- "or cancel autosave (will not prompt again until restart)"), desc.getDescription().c_str());
+ _("WARNING: The autosave slot contains a saved game named %S, and an autosave is pending.\n"
+ "Please move this saved game to a new slot, or delete it if it's no longer needed.\n"
+ "Alternatively, you can skip the autosave (will prompt again in 5 minutes)."), desc.getDescription().c_str());
GUI::MessageDialog warn(message, _("Move"), altButtons);
switch (runDialog(warn)) {
case GUI::kMessageOK:
- if (!getMetaEngine()->copySaveFileToFreeSlot(_targetName.c_str(), getAutosaveSlot())) {
- GUI::MessageDialog error(_("ERROR: Could not copy the savegame to a new slot"));
- error.runModal();
- return false;
+ if (getMetaEngine()->copySaveFileToFreeSlot(_targetName.c_str(), getAutosaveSlot())) {
+ g_system->getSavefileManager()->removeSavefile(
+ getMetaEngine()->getSavegameFile(getAutosaveSlot(), _targetName.c_str()));
+ } else {
+ GUI::MessageDialog error(_("ERROR: Could not copy the savegame to a new slot"));
+ error.runModal();
+ return false;
}
return true;
- case GUI::kMessageAlt: // Overwrite
+ case GUI::kMessageAlt: // Delete
+ g_system->getSavefileManager()->removeSavefile(
+ getMetaEngine()->getSavegameFile(getAutosaveSlot(), _targetName.c_str()));
return true;
- case GUI::kMessageAlt + 1: // Cancel autosave
- _autosaveInterval = 0;
+ case GUI::kMessageAlt + 1: // Skip autosave
return false;
default: // Hitting Escape returns -1. On this case, don't save but do prompt again later.
return false;
Commit: 414facb1cbe2e33ba863196c9123cc1e76f3ce30
https://github.com/scummvm/scummvm/commit/414facb1cbe2e33ba863196c9123cc1e76f3ce30
Author: macca8 (brugenerol at tpg.com.au)
Date: 2023-03-05T23:19:40+01:00
Commit Message:
ENGINES: Add user support only when autosaving is enabled
Allows autosave file to be:
- deleted,
- manually overwritten,
- tested when autosave fails or produces unexpected results.
Changed paths:
engines/savestate.cpp
diff --git a/engines/savestate.cpp b/engines/savestate.cpp
index 42565bdb819..c5c351ca5da 100644
--- a/engines/savestate.cpp
+++ b/engines/savestate.cpp
@@ -51,9 +51,10 @@ void SaveStateDescriptor::initSaveSlot(const MetaEngine *metaEngine) {
if (autosaveSlot >= 0 && _slot == autosaveSlot) {
const bool autosaveEnabled = ConfMan.getInt("autosave_period");
- // If autosaving enabled, do not allow autosave slot to be deleted or overwritten
- _isWriteProtected = autosaveEnabled;
- _isDeletable = !autosaveEnabled;
+ // When autosaving enabled, add user support for managing autosave file.
+ // If autosaving disabled, do not allow autosave slot to be deleted or overwritten (no changes unless autosave tests are active).
+ _isWriteProtected = !autosaveEnabled;
+ _isDeletable = autosaveEnabled;
} else {
_isWriteProtected = false;
_isDeletable = true;
Commit: 6ae964bb61f36e732df6af1f93e0172fb56c1fe1
https://github.com/scummvm/scummvm/commit/6ae964bb61f36e732df6af1f93e0172fb56c1fe1
Author: macca8 (brugenerol at tpg.com.au)
Date: 2023-03-05T23:19:40+01:00
Commit Message:
ENGINES: Remove all user access to autosave slot
Changed paths:
engines/savestate.cpp
diff --git a/engines/savestate.cpp b/engines/savestate.cpp
index c5c351ca5da..a9231af1a19 100644
--- a/engines/savestate.cpp
+++ b/engines/savestate.cpp
@@ -50,11 +50,9 @@ void SaveStateDescriptor::initSaveSlot(const MetaEngine *metaEngine) {
int autosaveSlot = metaEngine ? metaEngine->getAutosaveSlot() : -1;
if (autosaveSlot >= 0 && _slot == autosaveSlot) {
- const bool autosaveEnabled = ConfMan.getInt("autosave_period");
- // When autosaving enabled, add user support for managing autosave file.
- // If autosaving disabled, do not allow autosave slot to be deleted or overwritten (no changes unless autosave tests are active).
- _isWriteProtected = !autosaveEnabled;
- _isDeletable = autosaveEnabled;
+ // Do not allow autosave slot to be deleted or overwritten
+ _isWriteProtected = true;
+ _isDeletable = false;
} else {
_isWriteProtected = false;
_isDeletable = true;
More information about the Scummvm-git-logs
mailing list