[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