SDL2窗口打开并且保持无响应

时间:2019-01-25 08:35:19

标签: c++ sdl sdl-2

我无法解决这个问题。还没有机会在另一台PC上进行尝试。

我有一个非常简单的以下代码,用于打开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;
}

更新: 这似乎是Windows的特定问题。我注意到在启动我的电脑后,一切正常运行了一段时间,但是过了一段时间,由于某种原因,问题再次出现。在家里的Linux上我的问题是零。

TLDR:某些原因导致计算机在Windows上启动后不久,SDL无法正常工作。

UPDATE2: 没有任何事件处理窗口绘制完美。测试了简单的渲染器和背景颜色变化。但是,一旦实现任何事件处理功能(甚至是SDL_PumpEvents(0)),窗口就会冻结,并且大约需要5到10秒钟,直到渲染背景为止。它似乎挂在事件处理上。

0 个答案:

没有答案