您的位置:首页 > 其它

使用SDL2播放视频,窗口无法移动,处于繁忙状态的解决办法

2017-09-26 13:36 495 查看
无论播放视频是在主线程做,还是子线程做都会有这个问题。

解决这个问题的办法在于将每播放一帧后Sleep(40)的机制,

(假设25f/s),改为通过SDL的event机制,每隔40ms,

push一个event从而通知线程绘图。

下面是伪代码:

#define SDL_START_VIDEO_DECANDSHOW   (SDL_USEREVENT+1)

sdl_thread()

{

SDL_Event event;  
event.type = SDL_START_VIDEO_DECANDSHOW;  
SDL_PushEvent(&event);

}

decoderthread()

{

      SDL_Event sdlevent;

      while(1)

      {

      SDL_WaitEvent(&sdlevent);

      //check event type

      //decode and show

      }

}

备注:关闭播放窗口会触发SDL_QUIT event。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐