projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed forced screen redraw in every frame (again)
[rocksndiamonds.git]
/
src
/
tools.c
diff --git
a/src/tools.c
b/src/tools.c
index f1aa666e8004c9332f2a79579c903c7c59957a4d..552eef2fbb5faa9234f13d0dda57b0cc117a22e5 100644
(file)
--- a/
src/tools.c
+++ b/
src/tools.c
@@
-293,6
+293,9
@@
static void DrawMaskedBorderExt_Rect(int x, int y, int width, int height,
{
Bitmap *bitmap = getGlobalBorderBitmapFromGameStatus();
{
Bitmap *bitmap = getGlobalBorderBitmapFromGameStatus();
+ if (x == -1 && y == -1)
+ return;
+
if (blit_to_screen)
BlitToScreenMasked(bitmap, x, y, width, height, x, y);
else
if (blit_to_screen)
BlitToScreenMasked(bitmap, x, y, width, height, x, y);
else
@@
-503,8
+506,14
@@
static void PrintFrameTimeDebugging()
void BackToFront()
{
void BackToFront()
{
+ static int last_redraw_mask = REDRAW_NONE;
+
+ // force screen redraw in every frame to continue drawing global animations
+ // (but always use the last redraw mask to prevent unwanted side effects)
if (redraw_mask == REDRAW_NONE)
if (redraw_mask == REDRAW_NONE)
- return;
+ redraw_mask = last_redraw_mask;
+
+ last_redraw_mask = redraw_mask;
#if 1
// masked border now drawn immediately when blitting backbuffer to window
#if 1
// masked border now drawn immediately when blitting backbuffer to window
@@
-549,9
+558,6
@@
void BackToFront()
redraw_mask = REDRAW_NONE;
redraw_mask = REDRAW_NONE;
- // force screen redraw in every frame to continue drawing global animations
- redraw_mask = REDRAW_FIELD;
-
#if DEBUG_FRAME_TIME
PrintFrameTimeDebugging();
#endif
#if DEBUG_FRAME_TIME
PrintFrameTimeDebugging();
#endif
@@
-4228,7
+4234,7
@@
unsigned int MoveDoor(unsigned int door_state)
{ DX, DY, DXSIZE, DYSIZE },
{ VX, VY, VXSIZE, VYSIZE }
};
{ DX, DY, DXSIZE, DYSIZE },
{ VX, VY, VXSIZE, VYSIZE }
};
- static int door1 = DOOR_
OPEN
_1;
+ static int door1 = DOOR_
CLOSE
_1;
static int door2 = DOOR_CLOSE_2;
unsigned int door_delay = 0;
unsigned int door_delay_value;
static int door2 = DOOR_CLOSE_2;
unsigned int door_delay = 0;
unsigned int door_delay_value;