SDL_PushEvent 用来定时送Event到队列中,在由SDL_PeepEvents轮询获取对应的Event。
extern DECLSPEC int SDLCALL SDL_PeepEvents(SDL_Event * events, int numevents,
SDL_eventaction action,
Uint32 minType, Uint32 maxType);
typedef enum
{
SDL_ADDEVENT,
SDL_PEEKEVENT,
SDL_GETEVENT
} SDL_eventaction;
action 为 SDL_GETEVENT,将会把队列前部、匹配 'mask' 的numevents个事件返回,并把它们从队列中删除。
SDL_PushEvent 用来定时送Event到队列中,例如1秒钟25帧视频画面,代码如下:
while (true)
{
SDL_Event event;
event.type = USR_REFRESH_EVENT;
SDL_PushEvent(&event); // 发送刷新事件
qDebug()<< "SDL_Delay 40ms";
SDL_Delay(40); // 40ms刷新一次,即每秒25帧
}
SDL_PeepEvents轮询获取对应的Event,获取刷新视频画面的Event,代码如下:
for (;;)
{
SDL_Event event;
//SDL_WaitEvent(&event);
int nRes = SDL_PeepEvents(&event,1,SDL_GETEVENT,0,0xFFFFFFFF);
if(nRes > 0){
qDebug()<< "SDL_PeepEvents";
if(event.type == USR_REFRESH_EVENT){
//do some thing
}
}
}