[Scummvm-git-logs] scummvm master -> d3040b130bd7792473366e7d067637e290ca08dd
SupSuper
noreply at scummvm.org
Fri Dec 6 10:50:40 UTC 2024
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:
cc971c3632 BAGEL: Fix ingame GUI getting stuck after loading via GMM
976abcbdf2 GRAPHICS: Add option to use FrameLimiter without vsync
d3040b130b BAGEL: Always limit framerate
Commit: cc971c3632d385b4e73e9cf336940993e33db6f0
https://github.com/scummvm/scummvm/commit/cc971c3632d385b4e73e9cf336940993e33db6f0
Author: SupSuper (supsuper at gmail.com)
Date: 2024-12-06T10:49:57Z
Commit Message:
BAGEL: Fix ingame GUI getting stuck after loading via GMM
Changed paths:
engines/bagel/bagel.cpp
engines/bagel/bagel.h
diff --git a/engines/bagel/bagel.cpp b/engines/bagel/bagel.cpp
index c82b200c629..bd94b7b25cb 100644
--- a/engines/bagel/bagel.cpp
+++ b/engines/bagel/bagel.cpp
@@ -125,7 +125,7 @@ bool BagelEngine::isDemo() const {
return (_gameDescription->flags & ADGF_DEMO) != 0;
}
-bool BagelEngine::canSaveLoadFromWindow() const {
+bool BagelEngine::canSaveLoadFromWindow(bool save) const {
CBofWindow *win = CBofWindow::getActiveWindow();
// Don't allow saves when capture/focus is active
@@ -136,7 +136,7 @@ bool BagelEngine::canSaveLoadFromWindow() const {
// These two dialogs need to allow save/load for the ScummVM
// dialogs to work from them when original save/load is disabled
- if (dynamic_cast<CBagStartDialog *>(win) != nullptr ||
+ if ((dynamic_cast<CBagStartDialog *>(win) != nullptr && !save) ||
dynamic_cast<CBagOptWindow *>(win) != nullptr)
return true;
@@ -148,11 +148,11 @@ bool BagelEngine::canSaveLoadFromWindow() const {
}
bool BagelEngine::canLoadGameStateCurrently(Common::U32String *msg) {
- return canSaveLoadFromWindow();
+ return canSaveLoadFromWindow(false);
}
bool BagelEngine::canSaveGameStateCurrently(Common::U32String *msg) {
- return canSaveLoadFromWindow();
+ return canSaveLoadFromWindow(true);
}
Common::Error BagelEngine::saveGameState(int slot, const Common::String &desc, bool isAutosave) {
@@ -171,6 +171,10 @@ Common::Error BagelEngine::loadGameState(int slot) {
Common::Error result = Engine::loadGameState(slot);
if (result.getCode() == Common::kNoError) {
+ // Make sure we close any GUI windows before loading from GMM
+ CBofWindow *win = CBofWindow::getActiveWindow();
+ if (win)
+ win->close();
_masterWin->doRestore(&_saveData);
}
diff --git a/engines/bagel/bagel.h b/engines/bagel/bagel.h
index 2bb6b807ed5..e435481f675 100644
--- a/engines/bagel/bagel.h
+++ b/engines/bagel/bagel.h
@@ -38,7 +38,7 @@ private:
Common::RandomSource _randomSource;
StBagelSave _saveData;
- bool canSaveLoadFromWindow() const;
+ bool canSaveLoadFromWindow(bool save) const;
public:
Graphics::Screen *_screen = nullptr;
Commit: 976abcbdf29b1ce2713ab2dbddcd5cac1ac81514
https://github.com/scummvm/scummvm/commit/976abcbdf29b1ce2713ab2dbddcd5cac1ac81514
Author: SupSuper (supsuper at gmail.com)
Date: 2024-12-06T10:49:57Z
Commit Message:
GRAPHICS: Add option to use FrameLimiter without vsync
Changed paths:
graphics/framelimiter.cpp
graphics/framelimiter.h
diff --git a/graphics/framelimiter.cpp b/graphics/framelimiter.cpp
index 478b78a9f64..58267996471 100644
--- a/graphics/framelimiter.cpp
+++ b/graphics/framelimiter.cpp
@@ -25,13 +25,13 @@
namespace Graphics {
-FrameLimiter::FrameLimiter(OSystem *system, const uint framerate) :
+FrameLimiter::FrameLimiter(OSystem *system, const uint framerate, const bool vsync) :
_system(system),
_speedLimitMs(0),
_startFrameTime(0),
_lastFrameDurationMs(_speedLimitMs) {
// The frame limiter is disabled when vsync is enabled.
- _enabled = !_system->getFeatureState(OSystem::kFeatureVSync) && framerate != 0;
+ _enabled = !(vsync && _system->getFeatureState(OSystem::kFeatureVSync)) && (framerate != 0);
if (_enabled) {
_speedLimitMs = 1000 / CLIP<uint>(framerate, 0, 100);
diff --git a/graphics/framelimiter.h b/graphics/framelimiter.h
index 2edc6e38966..69995e4c411 100644
--- a/graphics/framelimiter.h
+++ b/graphics/framelimiter.h
@@ -36,7 +36,7 @@ namespace Graphics {
*/
class FrameLimiter {
public:
- FrameLimiter(OSystem *system, const uint framerate);
+ FrameLimiter(OSystem *system, const uint framerate, const bool vsync = true);
void startFrame();
void delayBeforeSwap();
Commit: d3040b130bd7792473366e7d067637e290ca08dd
https://github.com/scummvm/scummvm/commit/d3040b130bd7792473366e7d067637e290ca08dd
Author: SupSuper (supsuper at gmail.com)
Date: 2024-12-06T10:49:58Z
Commit Message:
BAGEL: Always limit framerate
Changed paths:
engines/bagel/boflib/app.cpp
engines/bagel/boflib/event_loop.cpp
engines/bagel/boflib/gui/dialog.cpp
diff --git a/engines/bagel/boflib/app.cpp b/engines/bagel/boflib/app.cpp
index 0fe77daef7c..4e1cc9fa6b0 100644
--- a/engines/bagel/boflib/app.cpp
+++ b/engines/bagel/boflib/app.cpp
@@ -118,7 +118,7 @@ ErrorCode CBofApp::runApp() {
// Acquire and dispatch messages until we need to quit, or too many errors
- Graphics::FrameLimiter limiter(g_system, 60);
+ Graphics::FrameLimiter limiter(g_system, 60, false);
while (!g_engine->shouldQuit() && CBofError::getErrorCount() < MAX_ERRORS) {
// Support for playing videos via the console
if (_consoleVideo && _consoleVideo->isPlaying()) {
diff --git a/engines/bagel/boflib/event_loop.cpp b/engines/bagel/boflib/event_loop.cpp
index 75cde770763..404488ed08c 100644
--- a/engines/bagel/boflib/event_loop.cpp
+++ b/engines/bagel/boflib/event_loop.cpp
@@ -25,7 +25,7 @@
namespace Bagel {
-EventLoop::EventLoop(Mode mode) : _limiter(g_system, 60),
+EventLoop::EventLoop(Mode mode) : _limiter(g_system, 60, false),
_mode(mode) {
}
diff --git a/engines/bagel/boflib/gui/dialog.cpp b/engines/bagel/boflib/gui/dialog.cpp
index 82d61dd001e..cef6cdcfd01 100644
--- a/engines/bagel/boflib/gui/dialog.cpp
+++ b/engines/bagel/boflib/gui/dialog.cpp
@@ -257,7 +257,7 @@ int CBofDialog::doModal() {
// Acquire and dispatch messages until quit message is received,
// or until there are too many errors.
- Graphics::FrameLimiter limiter(g_system, 60);
+ Graphics::FrameLimiter limiter(g_system, 60, false);
while (!_bEndDialog && !g_engine->shouldQuit() && (CBofError::getErrorCount() < MAX_ERRORS)) {
CBofSound::audioTask();
More information about the Scummvm-git-logs
mailing list