void TFB_ProcessEvents () { SDL_Event Event; while (SDL_PollEvent (&Event) > 0) { /* Run through the InputEvent filter. */ ProcessInputEvent (&Event); /* Handle graphics and exposure events. */ switch (Event.type) { case SDL_ACTIVEEVENT: /* Lose/gain visibility or focus */ /* Up to three different state changes can occur in one event. */ /* Here, disregard least significant change (mouse focus). */ #if 0 /* Currently disabled in mainline */ // This controls the automatic sleep/pause when minimized. // On small displays (e.g. mobile devices), APPINPUTFOCUS would // be an appropriate substitution for APPACTIVE: // if (Event.active.state & SDL_APPINPUTFOCUS) if (Event.active.state & SDL_APPACTIVE) GameActive = Event.active.gain; #endif break; case SDL_QUIT: QuitPosted = 1; break; case SDL_VIDEORESIZE: /* User resized video mode */ // TODO break; case SDL_VIDEOEXPOSE: /* Screen needs to be redrawn */ TFB_SwapBuffers (TFB_REDRAW_EXPOSE); break; default: break; } } }
void DirectFB_PumpEventsWindow(_THIS) { SDL_DFB_DEVICEDATA(_this); DFB_WindowData *p; DFBInputEvent ievt; for (p = devdata->firstwin; p != NULL; p = p->next) { DFBWindowEvent evt; SDL_Window *w = p->sdl_window; while (p->eventbuffer->GetEvent(p->eventbuffer, DFB_EVENT(&evt)) == DFB_OK) { if (!DirectFB_WM_ProcessEvent(_this, w, &evt)) ProcessWindowEvent(_this, p, w->flags, &evt); } } /* Now get relative events in case we need them */ while (devdata->events->GetEvent(devdata->events, DFB_EVENT(&ievt)) == DFB_OK) { ProcessInputEvent(_this, &ievt); } }