[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