emscripten/tests/mainloop_reschedule.cpp

31 строка
611 B
C++

#include <stdio.h>
#include <emscripten.h>
int n = 0;
double rate = 0;
double last = -1;
void main_loop(void) {
emscripten_sleep(0);
n++;
double now = emscripten_get_now();
if (last > 0) {
double curr = now - last;
rate = (rate*(n-1)+curr)/n;
if (n > 15) {
emscripten_cancel_main_loop();
int result = rate > 600;
printf("Final rate: %.2f, success: %d\n", rate, result);
REPORT_RESULT();
return;
}
}
last = emscripten_get_now();
printf("Main loop rate: %.2f (over %d)\n", rate, n);
}
int main(void) {
emscripten_set_main_loop(main_loop, 1, 1);
}