SDL_PushEvent 与 SDL_PeepEvents 实现定时发送与获取

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
            }
        }
  }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值