Fixed a crash issue caused by comparing timeval wrong

This commit is contained in:
2022-10-03 15:23:56 +01:00
parent bd32a1d221
commit 37663efcc0
2 changed files with 20 additions and 5 deletions

View File

@@ -190,10 +190,19 @@ void execEngine() {
//calc the time passed //calc the time passed
gettimeofday(&engine.realTime, NULL); gettimeofday(&engine.realTime, NULL);
// printf("real time: %ld.%ld sim time: %ld.%ld + (delta: %ld.%ld)\n",
// engine.realTime.tv_sec,
// engine.realTime.tv_usec,
// engine.simTime.tv_sec,
// engine.simTime.tv_usec,
// delta.tv_sec,
// delta.tv_usec
// );
//if not enough time has passed //if not enough time has passed
if (engine.simTime.tv_sec < engine.realTime.tv_sec && engine.simTime.tv_usec < engine.realTime.tv_usec) { if (timercmp(&engine.simTime, &engine.realTime, <)) {
//while not enough time has passed //while not enough time has passed
while(engine.simTime.tv_sec < engine.realTime.tv_sec && engine.simTime.tv_usec < engine.realTime.tv_usec) { while(timercmp(&engine.simTime, &engine.realTime, <)) {
//simulate the world //simulate the world
execStep(); execStep();
@@ -206,8 +215,8 @@ void execEngine() {
} }
//render the world //render the world
// SDL_SetRenderDrawColor(engine.renderer, 0, 0, 0, 255); //NOTE: This line can be disabled later SDL_SetRenderDrawColor(engine.renderer, 0, 0, 0, 255); //NOTE: This line can be disabled later
// SDL_RenderClear(engine.renderer); //NOTE: This line can be disabled later SDL_RenderClear(engine.renderer); //NOTE: This line can be disabled later
// SDL_RenderPresent(engine.renderer); SDL_RenderPresent(engine.renderer);
} }
} }

View File

@@ -126,12 +126,18 @@ static int nativeInitWindow(Interpreter* interpreter, LiteralArray* arguments) {
} }
//init the renderer //init the renderer
// SDL_SetHint(SDL_HINT_RENDER_DRIVER, "software");
engine.renderer = SDL_CreateRenderer(engine.window, -1, 0); engine.renderer = SDL_CreateRenderer(engine.window, -1, 0);
if (engine.renderer == NULL) { if (engine.renderer == NULL) {
fatalError("Failed to initialize the renderer\n"); fatalError("Failed to initialize the renderer\n");
} }
SDL_RendererInfo rendererInfo;
SDL_GetRendererInfo(engine.renderer, &rendererInfo);
printf("Renderer: %s\n", rendererInfo.name);
SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "best"); SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "best");
SDL_RenderSetLogicalSize(engine.renderer, engine.screenWidth, engine.screenHeight); SDL_RenderSetLogicalSize(engine.renderer, engine.screenWidth, engine.screenHeight);