
[英]Why the function SDL_WaitEvent (SDL2) got and error in my code?
[英]Why the function SDL_WaitEvent (SDL2) got error in my code?
我正在像引擎那样的Doom上工作,有时会检测到段错误,有时会被检测为segfault
由于sig abort
,有时也会出现此错误:
线程已经在初始化该类!
我使用了lldb
,它表明函数WaitEvent
出现错误。 SDL_Event
事件是通过此函数初始化的,有些我不知道如何得到错误。
void ft_init_sdl(t_var *var)
{
var->sdl.window = NULL;
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTS) < 0)
return ;
var->sdl.window = SDL_CreateWindow("DOOM", SDL_WINDOWPOS_CENTERED, \
SDL_WINDOWPOS_CENTERED, SIZE_X, SIZE_Y, 0);
var->sdl.render = SDL_CreateRenderer(var->sdl.window, -1, 1);
if (!var->sdl.window || !var->sdl.render)
return ;
}
在这里调用SDL_WaitEvent
:
void display(t_var *var)
{
sdl_clean_screen(var->sdl.render);
neo_display(var);
while (SDL_WaitEvent(&var->sdl.event))
{
if (var->sdl.event.type == SDL_QUIT)
ft_clean_quit(var->sdl.render, var->sdl.window);
else if (var->sdl.event.key.keysym.sym == SDLK_ESCAPE)
ft_clean_quit(var->sdl.render, var->sdl.window);
else if (var->sdl.event.type == SDL_KEYDOWN)
{
if (var->sdl.event.key.keysym.sym == SDLK_d)
{
var->player.angle += 6;
var->player.pcos = cos(var->player.angle * RAD);
var->player.psin = sin(var->player.angle * RAD);
sdl_clean_screen(var->sdl.render);
neo_display(var);
}
else if (var->sdl.event.key.keysym.sym == SDLK_a)
{
var->player.angle -= 6;
var->player.pcos = cos(var->player.angle * RAD);
var->player.psin = sin(var->player.angle * RAD);
sdl_clean_screen(var->sdl.render);
neo_display(var);
}
else if (var->sdl.event.key.keysym.sym == SDLK_w)
{
forward(var, 4, var->player.angle);
sdl_clean_screen(var->sdl.render);
neo_display(var);
}
else if (var->sdl.event.key.keysym.sym == SDLK_s)
{
backward(var, 4, var->player.angle);
sdl_clean_screen(var->sdl.render);
neo_display(var);
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.