emscripten/tests/sdl2_timer.c

49 строки
1.1 KiB
C

/*
* Copyright 2016 The Emscripten Authors. All rights reserved.
* Emscripten is available under two separate licenses, the MIT license and the
* University of Illinois/NCSA Open Source License. Both these licenses can be
* found in the LICENSE file.
*/
#include <assert.h>
#include <stdio.h>
#include <emscripten.h>
#include <SDL/SDL.h>
Uint32 SDLCALL report_result(Uint32 interval, void *param) {
static int reported = 0;
if (reported) return 0;
reported = 1;
SDL_Quit();
int result = *(int *)param;
printf("%p %d\n", param, result);
REPORT_RESULT(result);
return 0;
}
void nop(void) {}
int main(int argc, char** argv) {
SDL_Init(SDL_INIT_TIMER);
Uint32 ticks1 = SDL_GetTicks();
SDL_Delay(5); // busy-wait
Uint32 ticks2 = SDL_GetTicks();
if (ticks2 < ticks1 + 4) {
printf("not enough ticks from busy-wait\n");
REPORT_RESULT(9);
return 0;
}
int badret = 4;
int goodret = 5;
SDL_TimerID badtimer = SDL_AddTimer(500, report_result, &badret);
SDL_TimerID goodtimer = SDL_AddTimer(1000, report_result, &goodret);
SDL_RemoveTimer(badtimer);
emscripten_set_main_loop(nop, 0, 0);
return 0;
}