X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fevents.c;h=952f8995f602cdec1a475dd9c4fd76211138d907;hp=7282236ff8609522682938faca0ad99c59dbf80b;hb=0229cbe9c9f7d6969ac5ca96eb6b525a9fe3ccf4;hpb=daabb36abdc5b6cad050f60e576a1dd758854171 diff --git a/src/events.c b/src/events.c index 7282236f..952f8995 100644 --- a/src/events.c +++ b/src/events.c @@ -154,6 +154,9 @@ boolean NextValidEvent(Event *event) void EventLoop(void) { + static unsigned int sync_frame_delay = 0; + unsigned int sync_frame_delay_value = GAME_FRAME_DELAY; + while (1) { if (PendingEvent()) /* got event */ @@ -247,18 +250,14 @@ void EventLoop(void) has its own synchronization and is CPU friendly, too */ if (game_status == GAME_MODE_PLAYING) - { HandleGameActions(); - } - else - { - if (!PendingEvent()) /* delay only if no pending events */ - Delay(10); - } /* refresh window contents from drawing buffer, if needed */ BackToFront(); + if (game_status != GAME_MODE_PLAYING) + WaitUntilDelayReached(&sync_frame_delay, sync_frame_delay_value); + if (game_status == GAME_MODE_QUIT) return; }