SDL/C ++ Программа OpenGL, как я мешаю SDL ловить SIGINT

Это проблема с плавающей запятой. Попробуйте > вместо !=

float f = 1.0;
while (f > 0.0) {
    f = f - 0.1;
    printf("%.1f\n", f);
}
9
задан genpfault 31 August 2012 в 15:31
поделиться

3 ответа

Ctrl-C на консоли генерирует событие SDL_QUIT. Вы можете следить за этим событием, используя SDL_PollEvent или SDL_WaitEvent, и выходить (чисто) при его обнаружении.

Обратите внимание, что другие действия могут генерировать событие SDL_QUIT (например, при попытке закрыть главное окно через диспетчер окон).

10
ответ дан 4 December 2019 в 10:34
поделиться

Передача SDL_INIT_NOPARACHUTE флаг инициализации к SDL_Init "Препятствует тому, чтобы SDL ловил фатальные сигналы".


См.: http://www.libsdl.org/cgi/docwiki.cgi/SDL_Init

3
ответ дан 4 December 2019 в 10:34
поделиться

Я нашел ответ:

Флаг SDL_INIT_NOPARACHUTE получит фатальные сигналы так, чтобы SDL мог вымыться после себя. Это работает на вещи как SIGSEGV, но по-видимому SIGINT не является достаточно фатальным.

Мое решение состоит в том, чтобы сбросить обработчик сигналов к SIGINT после того, как SDL был инициализирован:

SDL_Init(SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE);
signal(SIGINT, SIG_DFL); 

Спасибо Кэшируется для Вас, вводит, это поместило меня на правильном пути.

Michael

5
ответ дан 4 December 2019 в 10:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: