[Scummvm-git-logs] scummvm master -> a7f24a59900b131e511064f82e903625e9c40a46

alxpnv noreply at scummvm.org
Mon Nov 22 12:38:31 UTC 2021


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

Summary:
a7f24a5990 ASYLUM: make sure async palette fades don't clash


Commit: a7f24a59900b131e511064f82e903625e9c40a46
    https://github.com/scummvm/scummvm/commit/a7f24a59900b131e511064f82e903625e9c40a46
Author: alxpnv (alxpnv22 at yahoo.com)
Date: 2021-11-22T15:42:32+03:00

Commit Message:
ASYLUM: make sure async palette fades don't clash

Potential fix for bug no. 13089

Changed paths:
    engines/asylum/system/screen.cpp
    engines/asylum/system/screen.h


diff --git a/engines/asylum/system/screen.cpp b/engines/asylum/system/screen.cpp
index 7fc718fb49..229be8ac26 100644
--- a/engines/asylum/system/screen.cpp
+++ b/engines/asylum/system/screen.cpp
@@ -373,12 +373,23 @@ void Screen::handlePaletteFadeTimer() {
 	_vm->getTimerManager()->removeTimerProc(&paletteFadeTimer);
 
 	_isFading = false;
+
+	if (!_fadeQueue.empty()) {
+		FadeParameters fadeParams = _fadeQueue.pop();
+		startPaletteFade(fadeParams.resourceId, fadeParams.ticksWait, fadeParams.delta);
+	}
 }
 
 void Screen::startPaletteFade(ResourceId resourceId, int32 ticksWait, int32 delta) {
 	if (_isFading && resourceId == _fadeResourceId)
 		return;
 
+	if (_isFading) {
+		FadeParameters fadeParams = {resourceId, ticksWait, delta};
+		_fadeQueue.push(fadeParams);
+		return;
+	}
+
 	stopPaletteFadeTimer();
 	_fadeResourceId = resourceId;
 	_fadeTicksWait = ticksWait;
diff --git a/engines/asylum/system/screen.h b/engines/asylum/system/screen.h
index 73b5fc8d66..24efddc609 100644
--- a/engines/asylum/system/screen.h
+++ b/engines/asylum/system/screen.h
@@ -24,6 +24,7 @@
 #define ASYLUM_SYSTEM_SCREEN_H
 
 #include "common/array.h"
+#include "common/queue.h"
 #include "common/rect.h"
 
 #include "graphics/palette.h"
@@ -70,6 +71,12 @@ typedef struct GraphicQueueItem {
 	}
 } GraphicQueueItem;
 
+struct FadeParameters {
+	ResourceId resourceId;
+	int32 ticksWait;
+	int32 delta;
+};
+
 class Screen {
 public:
 	Screen(AsylumEngine *_vm);
@@ -169,7 +176,7 @@ private:
 	ResourceId _fadeResourceId;
 	int32 _fadeTicksWait;
 	int32 _fadeDelta;
-
+	Common::Queue<FadeParameters> _fadeQueue;
 
 	byte *getPaletteData(ResourceId id);
 	void setPaletteGamma(byte *data, byte *target = NULL);




More information about the Scummvm-git-logs mailing list