implement setting vsync and swapinterval

vsync is not "true" vsync (that's always on in browsers) but changes the main loop timer from immediate to window.requestAnimationFrame
This commit is contained in:
Toad King 2018-01-14 23:29:20 -06:00
parent 2d3fc1a384
commit b75f4b4f67
2 changed files with 6 additions and 4 deletions

View File

@ -173,8 +173,7 @@ int main(int argc, char *argv[])
emscripten_set_canvas_element_size("#canvas", 800, 600); emscripten_set_canvas_element_size("#canvas", 800, 600);
emscripten_set_element_css_size("#canvas", 800.0, 600.0); emscripten_set_element_css_size("#canvas", 800.0, 600.0);
rarch_main(argc, argv, NULL); rarch_main(argc, argv, NULL);
emscripten_set_main_loop(emscripten_mainloop, emscripten_set_main_loop(emscripten_mainloop, 0, 1);
settings->bools.video_vsync ? 0 : INT_MAX, 1);
return 0; return 0;
} }

View File

@ -51,8 +51,11 @@ static int emscripten_initial_height;
static void gfx_ctx_emscripten_swap_interval(void *data, unsigned interval) static void gfx_ctx_emscripten_swap_interval(void *data, unsigned interval)
{ {
(void)data; (void)data;
/* no way to control VSync in WebGL. */
(void)interval; if (interval == 0)
emscripten_set_main_loop_timing(EM_TIMING_SETIMMEDIATE, 0);
else
emscripten_set_main_loop_timing(EM_TIMING_RAF, (int)interval);
} }
static void gfx_ctx_emscripten_get_canvas_size(int *width, int *height) static void gfx_ctx_emscripten_get_canvas_size(int *width, int *height)