SDL 2 在轮询事件时挂起
SDL 2 hangs when polling for events
我正在开发一个简单的 GUI,并且尝试使用 SDL 库但收效甚微。我正在用 C 语言开发,我无法切换到 C++。
我在 Linux 工作站(Red Hat Enterprise Server 5 (Tikanga))上使用 SDL 2.0.5。
问题是当我尝试捕获事件时,window 挂起。没有响应,100% CPU 使用率,我必须终止进程。单击 "x" 没有任何效果。
我写了一个简单的测试代码来找出问题所在,但我真的不知道该怎么做。它看起来像内部 "printf" 它从未达到过。
此外,如果我删除事件循环,则会达到 SDL_Quit()(无需终止进程),它会给我一个 "Segmentation fault".
#include <SDL.h>
#include <SDL_events.h>
SDL_Window *mainWin;
SDL_Event mainEv;
int quit = 0;
if(SDL_Init(SDL_INIT_VIDEO) != 0)
{
printf("Init error.\n");
return(1);
}
mainWin = SDL_CreateWindow("Title", 0, 0, 640, 480, 0);
while(!quit)
{
while(SDL_PollEvent(&mainEv))
{
printf("Event!\n");
switch(mainEv.type)
{
case SDL_KEYDOWN:
quit=1;
}
}
}
SDL_Quit();
尝试:
#include <SDL2/SDL.h>
//#include <SDL_events.h>
int main(void)
{ SDL_Window *mainWin;
...
... // same up to:
...
case SDL_KEYDOWN:
quit = 1;
...
SDL_Quit();
}
我将你的代码粘贴到“sdl_t.c”,所以编译它:
gcc sdl_t.c `sdl2-config --libs --cflags` -o sdl_t
我得到一个 window,它会在您按下某个键时弹出并消失。显然还有更多工作要做...
你看过这么好的教程吗?
我正在开发一个简单的 GUI,并且尝试使用 SDL 库但收效甚微。我正在用 C 语言开发,我无法切换到 C++。 我在 Linux 工作站(Red Hat Enterprise Server 5 (Tikanga))上使用 SDL 2.0.5。
问题是当我尝试捕获事件时,window 挂起。没有响应,100% CPU 使用率,我必须终止进程。单击 "x" 没有任何效果。 我写了一个简单的测试代码来找出问题所在,但我真的不知道该怎么做。它看起来像内部 "printf" 它从未达到过。
此外,如果我删除事件循环,则会达到 SDL_Quit()(无需终止进程),它会给我一个 "Segmentation fault".
#include <SDL.h>
#include <SDL_events.h>
SDL_Window *mainWin;
SDL_Event mainEv;
int quit = 0;
if(SDL_Init(SDL_INIT_VIDEO) != 0)
{
printf("Init error.\n");
return(1);
}
mainWin = SDL_CreateWindow("Title", 0, 0, 640, 480, 0);
while(!quit)
{
while(SDL_PollEvent(&mainEv))
{
printf("Event!\n");
switch(mainEv.type)
{
case SDL_KEYDOWN:
quit=1;
}
}
}
SDL_Quit();
尝试:
#include <SDL2/SDL.h>
//#include <SDL_events.h>
int main(void)
{ SDL_Window *mainWin;
...
... // same up to:
...
case SDL_KEYDOWN:
quit = 1;
...
SDL_Quit();
}
我将你的代码粘贴到“sdl_t.c”,所以编译它:
gcc sdl_t.c `sdl2-config --libs --cflags` -o sdl_t
我得到一个 window,它会在您按下某个键时弹出并消失。显然还有更多工作要做...
你看过这么好的教程吗?