1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
/*
* 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 start_time;
Uint32 SDLCALL timer_callback(Uint32 interval, void *param) {
static int reported = 0;
assert(!reported);
reported = 1;
int result = *(int *)param;
printf("timer_callback: %p %d\n", param, result);
assert(result == 5);
Uint32 now = SDL_GetTicks();
assert(now >= start_time + 500);
SDL_Quit();
emscripten_force_exit(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();
// not enough ticks from busy-wait
assert(ticks2 >= ticks1 + 4);
int badret = 4;
int goodret = 5;
start_time = SDL_GetTicks();
SDL_TimerID badtimer = SDL_AddTimer(500, timer_callback, &badret);
SDL_TimerID goodtimer = SDL_AddTimer(1000, timer_callback, &goodret);
SDL_RemoveTimer(badtimer);
return 99;
}
|