タイマーを作成する。
SDL_TimerID SDL_AddTimer(Uint32 interval, SDL_NewTimerCallback callback, void* param);
intervalはミリ秒で指定。
callbackは指定時間経過後に実行されるコールバック関数の関数ポインタ。この関数の定義は以下のとおり。
typedef Uint32 (*SDL_NewTimerCallback)(Uint32 interval, void* param);
paramはその実行される関数の引数。
タイマー作成成功時はタイマーIDが返る。エラーの時はNULLが返る。
コールバック関数の返り値はinterval。タイマー処理を終了する場合は、0を返す。
#include <SDL/SDL.h>
/* 終了フラグ */
int endFlag = 0;
/* コールバック関数(プログラム終了処理) */
Uint32 EndProgram(Uint32 interval, void* param){
/* 終了フラグを1にする。 */
endFlag = 1;
/* タイマーを終了する */
return 0;
}
int main(int argc, char* argv[]){
/* タイマーID */
SDL_TimerID id;
/* SDLライブラリ初期化 */
SDL_Init(SDL_INIT_EVERYTHING);
/* ウインドウを開く */
SDL_SetVideoMode(640, 480, 0, SDL_SWSURFACE);
/* タイマー作成 */
id = SDL_AddTimer(3000, &EndProgram, NULL);
/* 終了までループ */
while(endFlag == 0){
/* CPUを休めるためのスリープ処理 */
SDL_Delay(10);
}
/* タイマーの破棄 */
SDL_RemoveTimer(id);
SDL_Quit();
return 0;
}
3秒後にプログラムを終了する。