Fixed a crash issue caused by comparing timeval wrong
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user