int up_arrow, down_arrow, left_arrow, right_arrow;
")
(unwind-protect
(ffi:c-progn ()
"
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
\"Failed to init %s\",
SDL_GetError());
@(return);
}
if (SDL_CreateWindowAndRenderer(640,480,SDL_WINDOW_RESIZABLE,
&window, &renderer)) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
\"Failed to create w & r%s\",
SDL_GetError());
@(return);
}
quitted = 0;
for (;;) {
while(SDL_PollEvent(&e))
if (e.type == SDL_QUIT) quitted = 1;
else if (e.type == SDL_KEYDOWN)
switch (e.key.keysym.sym) {
case SDLK_q:
quitted = 1;
break;
}
if (quitted) break;
SDL_RenderClear(renderer);
SDL_RenderPresent(renderer);
SDL_Delay(25);
}")
(ffi:c-inline () () nil "SDL_Quit()" :one-liner t))