From 01ae74155800756597db52db963ee85baa50d743 Mon Sep 17 00:00:00 2001 From: Sebastian Krzyszkowiak Date: Sat, 21 Apr 2018 01:08:39 +0200 Subject: [PATCH] loading: call Gamestate_Logic in single thread mode as well --- src/internal.c | 3 +++ src/libsuperderpy.c | 6 +++--- src/libsuperderpy.h | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/internal.c b/src/internal.c index bae26ce..a223e4d 100644 --- a/src/internal.c +++ b/src/internal.c @@ -250,9 +250,12 @@ SYMBOL_INTERNAL void GamestateProgress(struct Game* game) { } #ifdef LIBSUPERDERPY_SINGLE_THREAD DrawGamestates(game); + double delta = al_get_time() - game->_priv.loading.time; if (tmp->showLoading) { + (*game->_priv.loading.gamestate->api->Gamestate_Logic)(game, game->_priv.loading.gamestate->data, delta); (*game->_priv.loading.gamestate->api->Gamestate_Draw)(game, game->_priv.loading.gamestate->data); } + game->_priv.loading.time += delta; DrawConsole(game); al_flip_display(); #endif diff --git a/src/libsuperderpy.c b/src/libsuperderpy.c index 74eacd5..e1b5c04 100644 --- a/src/libsuperderpy.c +++ b/src/libsuperderpy.c @@ -398,19 +398,19 @@ SYMBOL_INTERNAL void libsuperderpy_mainloop(void* g) { struct GamestateLoadingThreadData data = {.game = game, .gamestate = tmp, .bitmap_flags = al_get_new_bitmap_flags()}; game->_priv.loading.inProgress = true; + game->_priv.loading.time = al_get_time(); #ifndef LIBSUPERDERPY_SINGLE_THREAD al_run_detached_thread(GamestateLoadingThread, &data); - double time = al_get_time(); while (game->_priv.loading.inProgress) { DrawGamestates(game); al_set_target_backbuffer(game->display); - double delta = al_get_time() - time; + double delta = al_get_time() - game->_priv.loading.time; if (tmp->showLoading) { (*game->_priv.loading.gamestate->api->Gamestate_Logic)(game, game->_priv.loading.gamestate->data, delta); (*game->_priv.loading.gamestate->api->Gamestate_Draw)(game, game->_priv.loading.gamestate->data); } - time += delta; + game->_priv.loading.time += delta; DrawConsole(game); al_flip_display(); } diff --git a/src/libsuperderpy.h b/src/libsuperderpy.h index 8664ff6..0a19ca2 100644 --- a/src/libsuperderpy.h +++ b/src/libsuperderpy.h @@ -117,6 +117,7 @@ struct Game { int progress; int loaded, toLoad; bool inProgress; + double time; } loading; struct Gamestate* current_gamestate;