#include "input.h" #include #include struct LEO_App { SDL_Window *window; SDL_GLContext gl_context; }; int LEO_App_init(struct LEO_App *app) { if (!SDL_InitSubSystem(SDL_INIT_VIDEO)) { return 1; } app->window = SDL_CreateWindow("title", 640, 480, SDL_WINDOW_OPENGL); if (app->window == NULL) { return 2; } app->gl_context = SDL_GL_CreateContext(app->window); if (app->gl_context == NULL) { return 3; } return 0; } void LEO_App_run(struct LEO_App *app) { SDL_Event event; while (true) { while (SDL_PollEvent(&event)) LEO_Input_update(event); if (LEO_Input_quit()) break; SDL_GL_SwapWindow(app->window); SDL_Delay(10); } } void LEO_App_free(struct LEO_App *app) { if (app->gl_context != NULL) SDL_GL_DestroyContext(app->gl_context); if (app->window != NULL) SDL_DestroyWindow(app->window); SDL_Quit(); } int main(int argc, char **argv) { struct LEO_App app; if (LEO_App_init(&app)) { SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "failed to init app: %s", SDL_GetError()); } LEO_App_run(&app); LEO_App_free(&app); return 0; }