SDL2 窗口打开并保持无响应

Mik*_*nen 5 c++ sdl sdl-2

我无法理解这个问题。还没有机会在另一台电脑上尝试这个。

我有一个非常简单的以下代码,用于打开 SDL 窗口并进入循环。它打开了窗口,我可以看到循环做了一些事情,例如,我使用增量值对 SDL_SetWindowtitle() 进行了测试,并看到它不断增长,因此有一些生命。

然而它仍然卡住,没有反应。我无法按关闭按钮或移动窗口。有时它的生命力很弱,它会“更新”,但又会再次变得无响应。

我开始认为我的代码中存在一些我没有注意到的愚蠢错误。

代码编译一切正常,警告或错误为零。
我在 Windows 10 64 位上使用 MinGW 64 位编译器。

#include <SDL2/SDL.h>
int main(int argc, char** argv) {

  SDL_Window *window;
  SDL_Surface *surface;
  SDL_Renderer *renderer;
  SDL_Event event;

  int WINDOW_WIDTH = 1280;
  int WINDOW_HEIGHT = 720;
  bool exit = 1;

  if (SDL_Init( SDL_INIT_VIDEO ) < 0) {
    return 2;
  }

  window = SDL_CreateWindow("Gui test", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_SHOWN );
  if (!window) {
    return 3;
  }

  surface = SDL_GetWindowSurface(window);
  if (!surface) {
    return 4;
  }

  exit = false;
  while (!exit) {
    while(SDL_PollEvent(&event) > 0) {

      switch(event.type) {
        case SDL_QUIT:
          exit = true;
          break;
      }

    SDL_UpdateWindowSurface(window);
    SDL_Delay(1000/30);
    }
  }

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

更新:这似乎是 Windows 特定的问题。我注意到在工作中启动电脑后,一段时间内一切正常,但过了一会儿,由于某种原因问题又出现了。我家里的 Linux 问题为零。

TLDR:计算机在 Windows 上启动后不久,某些因素会阻止 SDL 正常工作。

UPDATE2:没有任何事件处理,窗口绘制得非常好。使用简单的渲染器和背景颜色更改进行测试。但是,一旦我实现任何事件处理函数(甚至 SDL_PumpEvents(0)),窗口就会冻结,并且需要大约 5-10 秒才能渲染背景。它似乎取决于事件处理。