Skip to content

Commit e814e16

Browse files
committed
fixed divider detection
1 parent 754e5d7 commit e814e16

File tree

1 file changed

+7
-15
lines changed

1 file changed

+7
-15
lines changed

src/system/sokol/main.c

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -593,25 +593,17 @@ static void checkrate(App* app)
593593
}
594594
else
595595
{
596-
s32 refreshrate = 1.0 / sapp_frame_duration();
596+
float refresh_rate = 1.0f / sapp_frame_duration();
597+
float target = refresh_rate / (float)TIC80_FRAMERATE;
598+
s32 div = (s32)roundf(target);
597599

598-
// check monitor refresh rate +-5Hz
599-
if(refreshrate == CLAMP(refreshrate, TIC80_FRAMERATE - 5, TIC80_FRAMERATE + 5))
600+
if (div >= 1 && div <= 4 && fabsf(refresh_rate - div * TIC80_FRAMERATE) <= 5.0f)
600601
{
601602
#if defined(__TIC_EMSCRIPTEN__)
602-
emscripten_set_main_loop_timing(EM_TIMING_RAF, 1);
603+
emscripten_set_main_loop_timing(EM_TIMING_RAF, div);
603604
#else
604-
// use every frame on 60Hz
605-
app->divider = 1;
606-
#endif
607-
}
608-
else if(refreshrate == CLAMP(refreshrate, 2 * TIC80_FRAMERATE - 5, 2 * TIC80_FRAMERATE + 5))
609-
{
610-
#if defined(__TIC_EMSCRIPTEN__)
611-
emscripten_set_main_loop_timing(EM_TIMING_RAF, 2);
612-
#else
613-
// use every 2nd frame on 120Hz
614-
app->divider = 2;
605+
// use every frame
606+
app->divider = div;
615607
#endif
616608
}
617609
else

0 commit comments

Comments
 (0)