projects
/
rocksndiamonds.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
9cd2d17
)
fixed screen redraw if fading area differs from redraw area (again)
author
Holger Schemel
<info@artsoft.org>
Mon, 30 May 2016 22:48:30 +0000
(
00:48
+0200)
committer
Holger Schemel
<info@artsoft.org>
Mon, 30 May 2016 22:48:30 +0000
(
00:48
+0200)
src/tools.c
patch
|
blob
|
history
diff --git
a/src/tools.c
b/src/tools.c
index 4080f2d2e2621b0c1efbad149a389ab9be829450..7ec68260c039aa73114f50eda882f07dd1884c1b 100644
(file)
--- a/
src/tools.c
+++ b/
src/tools.c
@@
-528,6
+528,22
@@
static void PrintFrameTimeDebugging()
}
#endif
}
#endif
+static int unifiedRedrawMask(int mask)
+{
+ if (mask & REDRAW_ALL)
+ return REDRAW_ALL;
+
+ if (mask & REDRAW_FIELD && mask & REDRAW_DOORS)
+ return REDRAW_ALL;
+
+ return mask;
+}
+
+static boolean equalRedrawMasks(int mask_1, int mask_2)
+{
+ return unifiedRedrawMask(mask_1) == unifiedRedrawMask(mask_2);
+}
+
void BackToFront()
{
static int last_redraw_mask = REDRAW_NONE;
void BackToFront()
{
static int last_redraw_mask = REDRAW_NONE;
@@
-731,17
+747,10
@@
static void SetScreenStates_AfterFadingIn()
gfx.fade_border_source_status = global.border_status;
global.anim_status = global.anim_status_next;
gfx.fade_border_source_status = global.border_status;
global.anim_status = global.anim_status_next;
-
- // force update of global animation status in case of rapid screen changes
- redraw_mask = REDRAW_ALL;
- BackToFront();
}
static void SetScreenStates_BeforeFadingOut()
{
}
static void SetScreenStates_BeforeFadingOut()
{
- // required if "fade_mask != redraw_mask" (fading only affects fade area)
- BackToFront();
-
// store new target screen (to use correct masked border for fading)
gfx.fade_border_target_status = game_status;
// store new target screen (to use correct masked border for fading)
gfx.fade_border_target_status = game_status;
@@
-776,10
+785,18
@@
void FadeIn(int fade_mask)
FADE_SYSIZE = FULL_SYSIZE;
SetScreenStates_AfterFadingIn();
FADE_SYSIZE = FULL_SYSIZE;
SetScreenStates_AfterFadingIn();
+
+ // force update of global animation status in case of rapid screen changes
+ redraw_mask = REDRAW_ALL;
+ BackToFront();
}
void FadeOut(int fade_mask)
{
}
void FadeOut(int fade_mask)
{
+ // update screen if areas covered by "fade_mask" and "redraw_mask" differ
+ if (!equalRedrawMasks(fade_mask, redraw_mask))
+ BackToFront();
+
SetScreenStates_BeforeFadingOut();
#if 0
SetScreenStates_BeforeFadingOut();
#if 0