projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
improved synchronization of main game loop
[rocksndiamonds.git]
/
src
/
events.c
diff --git
a/src/events.c
b/src/events.c
index 1afc85d65810bad65fe4cc07c31d36f648438b40..4c71dca04ece48c1d1e0b436656b51234f4c5c90 100644
(file)
--- a/
src/events.c
+++ b/
src/events.c
@@
-161,8
+161,13
@@
void EventLoop(void)
{
if (PendingEvent()) /* got event */
{
{
if (PendingEvent()) /* got event */
{
+ // use separate frame delay counter to not reset main delay counter
+ unsigned int sync_frame_delay2 = 0;
+ unsigned int sync_frame_delay_value2 = sync_frame_delay_value;
Event event;
Event event;
+ ResetDelayCounter(&sync_frame_delay2);
+
while (NextValidEvent(&event))
{
switch (event.type)
while (NextValidEvent(&event))
{
switch (event.type)
@@
-208,9
+213,14
@@
void EventLoop(void)
HandleOtherEvents(&event);
break;
}
HandleOtherEvents(&event);
break;
}
+
+ // do not handle events for longer than standard frame delay period
+ if (DelayReached(&sync_frame_delay2, sync_frame_delay_value2))
+ break;
}
}
}
}
- else
+
+ // always handle non-event game actions for every game frame interval
{
if (game_status == GAME_MODE_TITLE)
{
{
if (game_status == GAME_MODE_TITLE)
{