1.代码框架
1.1 SDL消息处理
static void event_loop(VideoState *cur_stream)
{
SDL_Event event;
double incr, pos, frac;
for (;;) {
double x;
//SDL event队列不为空,从队列头部取一个event,处理event
refresh_loop_wait_event(cur_stream, &event);
switch (event.type) {
case SDL_KEYDOWN: //键盘按键按下事件
...
switch (event.key.keysym.sym) {
case SDLK_f: //f全屏
toggle_full_screen(cur_stream);
...
case SDLK_s: // S: Step to next frame //s逐帧播放
step_to_next_frame(cur_stream);
...
case SDL_MOUSEBUTTONDOWN: //鼠标按下事件
...
if (event.button.button == SDL_BUTTON_LEFT) { //左键
...
case SDL_MOUSEMOTION: //鼠标移动事件
...